iOS:在UITableView里使用自定义Cell的那点事(简要总结)

在TableView里面使用自定义cell有两种创建方法,即是否通过register方法来注册cell,虽然最近一直在用注册的方法,不过以前一直是把模板直接拿来用,也没研究过两种方法的区别,今天再测一个功能的时候恰好遇到了bug,歪打正着地研究了一下,研究完觉得还挺有意思,在此聊以简要记录:


1,register了,cellForRow里面就不需要判断cell是否为nil了,复用dequeueReusableCellWithIdentifier时加不加forIndexPath参数皆可,

register分两种情况:

a.如果register的是Nib,则cell的布局在Nib上做就可以了;

b.如果register的是Class,则布局需要在重写的初始化方法里来做,也就是initWithStyle:reuseIdentifier:。

2,没有register,则cellForRow里面复用必须不能加forIndexPath参数,而且,此时要判断cell是否为nil,如果是,需要为cell进行初始化,也就是大家熟悉的

if(!cell){

cell = 出生证明;

}

这里又分两种情况:

a.自定义的cell是纯代码创建,那么cell里面在复写的initWithStyle:reuseIdentifier:里就可以进行布局了;

b.如果cell是用xib创建的,用上面那个方法就不行了,xib文件无法加载,这时直接把初始化写成这样就行了:

    if (!cell) {

        cell = [[[NSBundle mainBundle] loadNibNamed:@"MyTableViewCell" owner:self options:0] objectAtIndex:0];

    }

这样省却了很多代码,不过我在写这个的时候很好奇,不用标准的初始化方法,生成的cell的reuseIdentifier是什么?我打印了下cell.reuseIdentifier

NSLog(@"id %@", cell.reuseIdentifier);

null,而cellreuseIdentifier属性是只读的,无法再loadNib后手动设置,那没有reuseIdentifier会不会有问题呢?答案是不会,我也很纳闷为什么,不过为了保险起见,我还是要想办法设置reuseIdentifier,终于,一不小心在xib里找到了这一项——


设置完成,打印一下,大功告成:2016-10-17 16:31:55.132 TestTableView[6969:392241] id MyCell

有不对或不完善的地方,还请看官留步赐教,不胜感激~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值