美文网首页
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