iOS:在UITableView里使用自定义Cell的那点事(简要总结)
2016-10-17 17:05
330 查看
在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,而cell的reuseIdentifier属性是只读的,无法
4000
再loadNib后手动设置,那没有reuseIdentifier会不会有问题呢?答案是不会,我也很纳闷为什么,不过为了保险起见,我还是要想办法设置reuseIdentifier,终于,一不小心在xib里找到了这一项——
设置完成,打印一下,大功告成:2016-10-17 16:31:55.132 TestTableView[6969:392241] id MyCell
有不对或不完善的地方,还请看官留步赐教,不胜感激~~
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,而cell的reuseIdentifier属性是只读的,无法
4000
再loadNib后手动设置,那没有reuseIdentifier会不会有问题呢?答案是不会,我也很纳闷为什么,不过为了保险起见,我还是要想办法设置reuseIdentifier,终于,一不小心在xib里找到了这一项——
设置完成,打印一下,大功告成:2016-10-17 16:31:55.132 TestTableView[6969:392241] id MyCell
有不对或不完善的地方,还请看官留步赐教,不胜感激~~
相关文章推荐
- iOS开发总结之项目开发中使用UITableView自定义多级表格&自定义cell
- [IOS]UITableView重用(使用多个自定义Cell)
- 墨珞随笔 - IOS - 自定义UITableView的cell - 李江辉
- ios UITableview自定义cell
- iOS-UI控件之UITableView(二)- 自定义不等高的cell
- iOS之UITableView的使用——自定义UITableViewCell
- IOS UITableView 使用总结
- 使用自定义的tableViewCell- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NS
- iOS代码自定义UITableView Cell(每个Cell的高度不一样)
- iOS-UI控件之UITableView(三)- 自定义不等高的cell
- Xcode控件使用笔记四:UITableView-自定义Cell
- iOS项目开发小技巧 (三) --UITableView实现Cell左划删除等自定义功能
- iOS7中UITableView中cell的使用
- IOS UITableView 移动自定义cell
- [iOS]技巧集锦:UITableView自定义Cell中的控件无法完全对齐Cell的左边界和右边界
- IOS 表视图(UITableVIew)的使用方法(4)自定义表视图单元
- 学习IOS开发UI篇--UITableView中Cell的创建方式总结
- iOS UITableView表视图(3)自定义cell
- iOS开发笔记--解决UITableView中Cell重用机制导致内容出错的方法总结
- Swift UITableView使用自定义cell