UITableViewCell重用相关

1、cell重用方法

dequeueReusableCellWithIdentifier:(推荐使用)
dequeueReusableCellWithIdentifier:indexPath:(iOS6后新方法,获取的cell类型必须是事先注册过才行,这也是新方法与前面方法的区别所在,也因此个人不推荐使用)

2、cell注册方法

(注册说白了,就是告诉tableview在缓存池没有可重用cell的时候创建什么类型的cell)

通过代码注册:

    [self.myTableView registerClass:<#(nullable Class)#> forCellReuseIdentifier:<#(nonnull NSString *)#>]
    [self.myTableView registerNib:<#(nullable UINib *)#> forCellReuseIdentifier:<#(nonnull NSString *)#>]

通过xib或者storyboard注册:

直接给与tableview属性连线的xib或者stroyboard当中cell设置重用标识符即完成注册

3、数据源方法

(UITableViewDataSource)

不需要注册cell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
   //从缓存池当中获取可重用的cell
   UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
   
   if (!cell)//没有可以重用的cell,旧需要手动创建,并加入到缓存池当中
   {
       cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
   }
   
   return cell;
}

必须事先注册cell

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //从缓存池当中获取可重用的cell,如果没有救创建标识符尾cell的cell
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
    
    return cell;
}

4、注意事项

如果采用重用机制,需要每次重新覆盖cell数据,
(通常更新模型,并重新给cell的模型属性赋值)

你可能感兴趣的:(UITableViewCell重用相关)