天天看點

UITaleView 重用機制

TableView的重用機制,為了做到顯示和資料分離,IOS tableView的實作并且不是為每個資料項建立一個tableCell。而是隻建立螢幕可顯示最大個數的cell,然後重複使用這些cell,對cell做單獨的顯示配置,來達到既不影響顯示效果,又能充分節約内容的目的。

即建立若幹個cell 其它的會從一個叫重用隊列裡取出來然後使用 ,tableView 調用dequeueReusableCell這個方法。

一、重用寫法有兩種

1、注冊

// 注冊寫在建立 UITableView的地方 
 [tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
           
//取寫在傳回單元格的方法裡
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
           

2、在cell的建立方法裡從重用隊列裡根據辨別符取出cell,然後判斷,隊列裡是否有cell,如果沒有建立一個cell 并且加了辨別符,然後return cell。如果有則直接傳回。此種可以設定cell的樣式。

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    if (cell ==nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];
    }
 return cell;
           

重點:為了實作資料和cell徹底分離。需要删除重用的cell的所有子視圖,進而得到一個沒有特殊格式的cell,供其他cell重用。在return cell之前:

NSArray  *arr =  cell.contentView.subviews;
    for ( UIView *vi  in arr) {
        //把cell的contentView上面所有的子視圖從父類上面移除
        [vi  removeFromSuperview];
    }
           

繼續閱讀