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