UItableView初始化时register注册cell

最近想弄个TabelView,然后发现传统的创建cell的方法除了问题:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellid forIndexPath:indexPath];

if (cell == nil) {

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];}

在初始化tableview的时候我没有使用registerClass和registerNib注册cell,结果tableView没有复用,每条数据都会创建一个cell,没有达到复用的效果!因此:

若要使用UITableView的复用机制,就必须在初始化UITableView的时候就注册Cell或Header/Footer并制定其Identifier,注册的方式分两种:registerClass和registerNib,具体怎么用呢:

1.如果你的TableViewCell是只有代码没有xib:

[self.baseTableView registerClass:[UITableViewCell class]forCellReuseIdentifier:@"CellReuseIdentifier"];

2.如果TableViewCell是代码加xib的话有以下两种方式注册:

(1)除了上面那句代码,还需在Cell的.m文件中实现:initWithStyle并自己加载Nib:

(NSString*)reuseIdentifier {

self= [super initWithStyle:style reuseIdentifier:reuseIdentifier];

if(self) {

NSArray*nibArray = [[NSBundle mainBundle]loadNibNamed:@"HomeTableViewCell"owner:niloptions:nil];

self= [nibArray lastObject];

[self  initCell];

}

returnself;

}

(2).直接使用registerNib进行注册

[self.baseTableView registerNib:[UINib nibWithNibName:@"HomeTabelViewCell"bundle:nil] forCellReuseIdentifier:@"HomeTabelViewCell"];

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • UITableViewCell控件空间构造 cell的子控件是contentView,contentView的子控...
    CoderZXS阅读 757评论 0 1
  • UITableViewCell 父类是UIView UITableView的每一行都是一个UITableViewC...
    翻这个墙阅读 6,714评论 0 1
  • UITableView 表格视图一 UITableView1.1是什么?以列表的方式展示数据的一种控件,且继承自...
    037e3257fa3b阅读 275评论 0 1
  • 版权声明:未经本人允许,禁止转载. 1. TableView初始化 1.UITableView有两种风格:UITa...
    萧雪痕阅读 2,922评论 2 10
  • 没有想要联系的欲望,就意味着不感兴趣、不喜欢。没必要因为寂寞空虚 将感情牵强的寄托在某一人身上。
    唉哟喂啊阅读 283评论 0 0