? ? ? ?1、表視圖單元格
? ? ? ?表視圖單元格的重用方法有兩個(gè):dequeueReusableCellWithIdentifier:方法和 dequeueReusableCellWithIdentifier:forIndexPath:方法。
? ? ? ?通過(guò)dequeueReusableCellWithIdentifier:方法,可以用標(biāo)識(shí)符從表視圖中獲得可重用單元格,模式代碼如下:
? ? ? ?let cellIdentifier = "CellIdentifier"
? ? ? ?var cell:UITableViewCell! =
? ? ? ?tableView.dequeueReusableCellWithIdentifier(cellIdentifier)
? ? ? ??as? UITableViewCell
? ? ? ?if (cell == nil) {
? ? ? ??cell = UITableViewCell(style: UITableViewCellStyle.Default,
? ? ? ??reuseIdentifier:cellIdentifier)
? ? ? ?}? ? ? ??
? ? ? ?static NSString *CellIdentifier = @"CellIdentifier";
? ? ? ?UITableViewCell *cell = [tableView
? ? ? ??dequeueReusableCellWithIdentifier:CellIdentifier];
? ? ? ?if (cell == nil) {
? ? ? ??cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
? ? ? ??reuseIdentifier:CellIdentifier];
? ? ? ??}?
? ? ? ?要在表視圖數(shù)據(jù)源的tableView:cellForRowAtIndexPath:方法中使用可重用單元格設(shè)計(jì),首先通過(guò)
? ? ? ?dequeueReusableCellWithIdentifier:方法從表視圖中找,如果cell為空,則需要使用initWithStyle:reuseIdentifier:構(gòu)造器創(chuàng)建。?
? ? ? ?dequeueReusableCellWithIdentifier:forIndexPath:方法是iOS 6之后提供的方法。與上一個(gè)方法相比,該方法的簽名多了forIndexPath:部分。它可以通過(guò)指定單元格位置獲得可重用單元格,不需要判斷,模式代碼如下:
? ? ? ?let CellIdentifier = "CellIdentifier"
? ? ? ?var cell:UITableViewCell! = tableView.dequeueReusableCellWithIdentifier
? ? ? ??(CellIdentifier, forIndexPath:indexPath) as? UITableViewCell
? ? ? ?static NSString *CellIdentifier = @"CellIdentifier";
? ? ? ?UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
? ? ? ??CellIdentifier forIndexPath:indexPath];?
? ? ? ?這個(gè)方法的使用有一些限制,它只能應(yīng)用于iOS故事板中,并且在故事板中設(shè)計(jì)表視圖單元格后,指定表視圖單元格為動(dòng)態(tài)的,Identifier屬性設(shè)置為cellIdentifier。圖1設(shè)定了表視圖單元格的屬性。
圖1、表視圖中的可重用單元格
? ? ? ?2、表視圖節(jié)頭節(jié)腳視圖
? ? ? ?UITableViewHeaderFooterView也是iOS 6之后新加的內(nèi)容,節(jié)頭和節(jié)腳也會(huì)反復(fù)出現(xiàn),它也需要可重用設(shè)計(jì)。
? ? ? ?使用表視圖的dequeueReusableHeaderFooterViewWithIdentifier:方法獲得UITableViewHeaderFooterView對(duì)象后,如果沒(méi)有可重用的UITableViewHeaderFooterView對(duì)象,則使用initWithReuseIdentifier:構(gòu)造器創(chuàng)建。其模式代碼如下:
? ? ? ?override func tableView(tableView: UITableView, viewForHeaderInSection
? ? ? ??section:Int) -> UIView? {
? ? ? ??let headerReuseIdentifier = "TableViewSectionHeaderViewIdentifier"
? ? ? ??var sectionHeaderView :UITableViewHeaderFooterView!
? ? ? ??= tableView.dequeueReusableHeaderFooterViewWithIdentifier
? ? ? ??(headerReuseIdentifier) as? UITableViewHeaderFooterView
? ? ? ??if sectionHeaderView == nil {
? ? ? ??sectionHeaderView
? ? ? ??= UITableViewHeaderFooterView(reuseIdentifier:
? ? ? ??headerReuseIdentifier)
? ? ? ??}
? ? ? ??......
? ? ? ??return sectionHeaderView
? ? ? ?}? ? ? ??
? ? ? ?- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:
? ? ? ??(NSInteger)section
? ? ? ?{
? ? ? ??static NSString *headerReuseIdentifier =
? ? ? ??@"TableViewSectionHeaderViewIdentifier";
? ? ? ??UITableViewHeaderFooterView *sectionHeaderView = [tableView
? ? ? ??dequeueReusableHeaderFooterViewWithIdentifier:
? ? ? ??headerReuseIdentifier];
? ? ? ??if (!sectionHeaderView) {
? ? ? ??sectionHeaderView = [[UITableViewHeaderFooterView alloc]
? ? ? ??initWithReuseIdentifier:headerReuseIdentifier];
? ? ? ??}
? ? ? ??......
? ? ? ??return sectionHeaderView;
? ? ? ?}
? ? ? ?需要在表視圖委托協(xié)議UITableViewDelegate中的tableView:viewForHeaderInSection:方法中使用可重用對(duì)象設(shè)計(jì)。?
? ? ? ?關(guān)于IOS開(kāi)發(fā)中表視圖的可重用對(duì)象就先介紹到這里,了解更多關(guān)于南昌APP開(kāi)發(fā)方面的知識(shí),歡迎繼續(xù)關(guān)注本公司網(wǎng)站!