美文网首页
UITableView 复用Cell的方式

UITableView 复用Cell的方式

作者: 简化 | 来源:发表于2019-10-30 12:22 被阅读0次

首先是复用的一般代码,2种

    ChatDetailDETAILTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIndentifier];
    ChatDetailDETAILTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIndentifier forIndexPath:indexPath];

两者是不同的复用Cell的调用方法。前者是自定义的Cell没有在IB里面设置任何Identifier时候,自定义自己的标识,这样就能避免数据模型不同的Cell之间的复用。后者就是Cell直接复用你设计好的。
两者差别在于Identifier的设置与否,代码的方式注册想要复用的Cell,以下两种办法都需要在IB里面设置Identifier

[self.mainTableView registerNib:[UINib nibWithNibName:NSStringFromClass([ChatDetailTableViewCell class]) bundle:nil]  forCellReuseIdentifier:@"ChatDetailTableViewCell"];
[self.mainTableView registerClass:[ChatDetailTableViewCell class] forCellReuseIdentifier:@""];

(我的使用环境是:需要从互联网拿到图像的数据,然后填充在Cell里边。不同的Cell,不同的图像。于是我目前没想出复用一个Cell的方式来实时的更新图像同时加载Cell。)
设置自己的Identifier的方式依据你的Cell是从Xib文件初始化 还是 纯代码的新建Cell。

使用纯代码:
需要在Cell中重写该方法,在这个方法里设置 reuseIdentifier

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        [self initSubView];
    }
    return self;
}

然后初始化为 自定义类 QATableViewCell

    QATableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIndentifier];
        if (cell == nil) {
            cell = [[QATableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellTableIndentifier];
        }

使用Xib文件:

NSString *CellTableIndentifier = [NSString stringWithFormat:@""];
ChatDetailDETAILTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIndentifier];
    if(cell == nil)
    {
        NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"****Cell" owner:self options:nil];
        cell = [nib objectAtIndex:0];
        [cell setValue:CellTableIndentifier forKey:@"reuseIdentifier"];
        NSLog(@"cell 的标志是%@",cell.reuseIdentifier);
[self.mainTableView registerNib:[UINib nibWithNibName:NSStringFromClass([ChatDetailTableViewCell class]) bundle:nil]  forCellReuseIdentifier:CellTableIndentifier];
  }

以上就是两种生成Cell,并且设置复用标识的方式了。

相关文章

网友评论

      本文标题:UITableView 复用Cell的方式

      本文链接:https://www.haomeiwen.com/subject/fijovctx.html