? ? ? ?1、表視圖單元格
? ? ? ?表視圖單元格的重用方法有兩個:dequeueReusableCellWithIdentifier:方法和 dequeueReusableCellWithIdentifier:forIndexPath:方法。
? ? ? ?通過dequeueReusableCellWithIdentifier:方法,可以用標識符從表視圖中獲得可重用單元格,模式代碼如下:
? ? ? ?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];
? ? ? ??}?
? ? ? ?要在表視圖數據源的tableView:cellForRowAtIndexPath:方法中使用可重用單元格設計,首先通過
? ? ? ?dequeueReusableCellWithIdentifier:方法從表視圖中找,如果cell為空,則需要使用initWithStyle:reuseIdentifier:構造器創建。?
? ? ? ?dequeueReusableCellWithIdentifier:forIndexPath:方法是iOS 6之后提供的方法。與上一個方法相比,該方法的簽名多了forIndexPath:部分。它可以通過指定單元格位置獲得可重用單元格,不需要判斷,模式代碼如下:
? ? ? ?let CellIdentifier = "CellIdentifier"
? ? ? ?var cell:UITableViewCell! = tableView.dequeueReusableCellWithIdentifier
? ? ? ??(CellIdentifier, forIndexPath:indexPath) as? UITableViewCell
? ? ? ?static NSString *CellIdentifier = @"CellIdentifier";
? ? ? ?UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:
? ? ? ??CellIdentifier forIndexPath:indexPath];?
? ? ? ?這個方法的使用有一些限制,它只能應用于iOS故事板中,并且在故事板中設計表視圖單元格后,指定表視圖單元格為動態的,Identifier屬性設置為cellIdentifier。圖1設定了表視圖單元格的屬性。
圖1、表視圖中的可重用單元格
? ? ? ?2、表視圖節頭節腳視圖
? ? ? ?UITableViewHeaderFooterView也是iOS 6之后新加的內容,節頭和節腳也會反復出現,它也需要可重用設計。
? ? ? ?使用表視圖的dequeueReusableHeaderFooterViewWithIdentifier:方法獲得UITableViewHeaderFooterView對象后,如果沒有可重用的UITableViewHeaderFooterView對象,則使用initWithReuseIdentifier:構造器創建。其模式代碼如下:
? ? ? ?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;
? ? ? ?}
? ? ? ?需要在表視圖委托協議UITableViewDelegate中的tableView:viewForHeaderInSection:方法中使用可重用對象設計。?
? ? ? ?關于IOS開發中表視圖的可重用對象就先介紹到這里,了解更多關于南昌APP開發方面的知識,歡迎繼續關注本公司網站!