美文网首页
UITableViewCell的几种初始化方法

UITableViewCell的几种初始化方法

作者: Crazy_Init | 来源:发表于2019-04-10 16:40 被阅读0次

    首先丢出我的Demo吧,代码加描述,理解更清晰。https://github.com/youngfewang/TableViewCellForInit

    在开发的过程中,总会有一些需要注重细节的,从一些需求,可能追溯到根源。前一段时间,有一个需求:cell内UILable两行显示时,隐藏其余信息。具体效果如图:


    0DF08503F7775FDBC5E7E74065B86966.jpg

    检测文本是否两行,我就不详细讲述了,我的Demo中都有。这里详细讲述一下UITableViewCell的几种初始化方法。


    WX20190410-142552.png

    1、- (nullable __kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier;
    方法的官方解释,大意上是说,从重用池中寻找空闲的Cell,不会重新创建。也就是说如果重用池中没有符合标识的cell,那么就会返回空。

    2、- (__kindof UITableViewCell *)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath;
    这个初始化方法,有一个大前提,那就是cell已经注册过了。然后会从重用池中找出空闲的符合标识的cell,然后调整cell的大小。

    3、- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(nullable NSString *)reuseIdentifier;
    这个方法比较通用和硬核,但是并没有重用。所以一般是结合第一种重用方法来使用。

    以上就是使用的一些方法。而从注册cell到重用cell的时候,也有区分多种方式:
    1、代码手动为UITableView注册UITableViewCell,此时选择使用上面方法1和方法2去重用cell都可以(此处不考虑性能,虽然个人觉得这两个的性能也相差不大😊😊)。但是这两个的小细节就是方法1并不会调整cell的大小,也就是说此时cell的宽度并不是被确定的,如果想通过宽度去处理一些问题,那么就会不正确。也就是我拿到需求后遇见的问题。
    2、通过StoryBoard或XIB来为UITableView注册UITableViewCell。这种情况和上面的代码手动添加是一样的。
    3、不为UITableView注册UITableViewCell。此时重用池中是没有这种cell的,通过上面方法1来获取cell,会返回空对象,此时必须要手动通过方法3来初始化一个。而且!!!记住方法2,有个大前提,默认cell已经注册过。也就是说,如果没有为UITableView注册UITableViewCell,那么一定不能使用方法2。

    相关文章

      网友评论

          本文标题:UITableViewCell的几种初始化方法

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