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];
}