美文网首页iOS基础知识
UITbaleView注册cell的两种方式

UITbaleView注册cell的两种方式

作者: 鄂北 | 来源:发表于2020-04-12 17:39 被阅读0次

    最近由独立开发转为合作开发了,发现在tableview注册cell时我和队友有些不一样,查了些资料在这里记录下。

    一注册自定义cell

    在tableview初始化时注册cell,注册cell时有两种方式,这两种方式是取决于你cell是使用xib创建的还是纯代码创建。
    1.注册使用纯代码创建的cell

        [self.tableview registerClass:[CustomTableViewCell class] forCellReuseIdentifier:@"cell"];
    

    2.注册使用xib创建的cell

        [self.tableview registerNib:[UINib nibWithNibName:@"CustomTableViewCell" bundle:nil] forCellReuseIdentifier:@"cell"];
    

    二调用cell

    在调用cell时也有两种方式

    方法一:dequeueReusableCellWithIdentifier:(NSString *)identifier
    这种方式需要判断cell是否为nil,如已经在初始化tableview时已经注册了cell就不需要if里的代码了。
    1.纯代码创建的cell

        CustomTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
        // 这种方式需要判断cell是否为nil,如已经在初始化tableview时已经注册了cell就不需要下面这代码了
        if (cell == nil) {
            // 如果用纯代码创建的cell
            cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
        }
    

    2.xib创建的cell

        CustomTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
        // 这种方式需要判断cell是否为nil,如已经在初始化tableview时已经注册了cell就不需要下面这代码了
        if (cell == nil) {
            // 如果是xib创建的cell
            cell = [[[NSBundle mainBundle] loadNibNamed:@"CustomTableViewCell" owner:self options:nil] firstObject];
        }
    

    方法二:dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath

        CustomTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
    

    这种方式就不需要再去判断cell是否为nil了,但是这种方式就必需要注册cell,否则会报错。方法一不一定要注册cell,但是如果没有先注册cell,就需要在加载cell时判断cell是否为nil,如果为nil就需要再注册cell。

    相关文章

      网友评论

        本文标题:UITbaleView注册cell的两种方式

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