关于UITableView的一点使用心得
2015-11-08 16:57
507 查看
1.如何在使用重用池的情况下设置UITableViewCell的style
如果在tableView初期化的时候注册了重用池 (此处的tableView定义为属性,是用懒加载的方式进行的初始化)
![](https://img-blog.csdn.net/20151108161013417)
如果你也像上图所描述的那样注册重用池,那么在下面的方法中,即使从重用池中取不到cell,那么也无法走进if(!cell)的分支中
![](https://img-blog.csdn.net/20151108161258886)
这种情况下生成的cell的style是UITableViewCellStyleDefault类型的,也就是不显示cell的detailText。但是,对于希望显示detailText的情况来说,这就很不乐观。那么如何解决呢?方法很简答,就是在最tableView做初始化的时候不注册重用池,那么当重用池里面取不到可用的cell的时候,代码就会进入到if(!cell)的分支中,这样我们就可以得到自己想要的style的cell了。
2.tableView的move操作
![](https://img-blog.csdn.net/20151108163317532)
move的机制就是先将要move的对象存入相同类型的变量,然后在数组中将该元素删除,然后再在要move到的地方将该元素插入,需要注意的是,用来存储的变量一定要重新分配空间,因为如果直接写成
![](https://img-blog.csdn.net/20151108163727535)
上面这种形式,那么在remove操作结束后,这个contact1的值将会变为空,那么接下来也只会在_dataSource的数组中插入一个空字典,当页面刷新的时候,从数组中读取数据,当读到这条空数据的时候,就会发生crash,所以必须重新开辟空间,生成一个副本,这样数组的remove操作就不会影响到这个存储的变量的值了。但是,如果你的数组里面存储的时NSString类型的话,就可以使用上图这种方法直接存储而不会出错。
3.关于UITableViewCell中的自带属性的重新定义
直接用系统自带的UITableViewCell的imageView做出的效果如下:
![](https://img-blog.csdn.net/20151108164803488)
我们可以看到左边相邻的上下两行的cell中的图片是紧挨着的,代码如下:
![](https://img-blog.csdn.net/20151108164550193)
可是我希望上下的两种图片之间留有一定空隙,达到下面这种效果:
![](https://img-blog.csdn.net/20151108164639985)
经过一番查阅,在Cocoa上面有网友给出了解决方案,就是自定义一个UITableViewCell的子类,然后在该子类中重写layoutSubviews方法,重新设定imageView的frame,代码如下:
![](https://img-blog.csdn.net/20151108165125524)
![](https://img-blog.csdn.net/20151108165141699)
并且将cell定义为该类型的就可以了
![](https://img-blog.csdn.net/20151108165234321)
以上是本人在学习过程中自己总结出来的一下小知识点,如有不足或者说的不对的地方,还请各位前辈指教!!!欢迎大家补充和纠错!!!
如果在tableView初期化的时候注册了重用池 (此处的tableView定义为属性,是用懒加载的方式进行的初始化)
如果你也像上图所描述的那样注册重用池,那么在下面的方法中,即使从重用池中取不到cell,那么也无法走进if(!cell)的分支中
这种情况下生成的cell的style是UITableViewCellStyleDefault类型的,也就是不显示cell的detailText。但是,对于希望显示detailText的情况来说,这就很不乐观。那么如何解决呢?方法很简答,就是在最tableView做初始化的时候不注册重用池,那么当重用池里面取不到可用的cell的时候,代码就会进入到if(!cell)的分支中,这样我们就可以得到自己想要的style的cell了。
2.tableView的move操作
move的机制就是先将要move的对象存入相同类型的变量,然后在数组中将该元素删除,然后再在要move到的地方将该元素插入,需要注意的是,用来存储的变量一定要重新分配空间,因为如果直接写成
上面这种形式,那么在remove操作结束后,这个contact1的值将会变为空,那么接下来也只会在_dataSource的数组中插入一个空字典,当页面刷新的时候,从数组中读取数据,当读到这条空数据的时候,就会发生crash,所以必须重新开辟空间,生成一个副本,这样数组的remove操作就不会影响到这个存储的变量的值了。但是,如果你的数组里面存储的时NSString类型的话,就可以使用上图这种方法直接存储而不会出错。
3.关于UITableViewCell中的自带属性的重新定义
直接用系统自带的UITableViewCell的imageView做出的效果如下:
我们可以看到左边相邻的上下两行的cell中的图片是紧挨着的,代码如下:
可是我希望上下的两种图片之间留有一定空隙,达到下面这种效果:
经过一番查阅,在Cocoa上面有网友给出了解决方案,就是自定义一个UITableViewCell的子类,然后在该子类中重写layoutSubviews方法,重新设定imageView的frame,代码如下:
并且将cell定义为该类型的就可以了
以上是本人在学习过程中自己总结出来的一下小知识点,如有不足或者说的不对的地方,还请各位前辈指教!!!欢迎大家补充和纠错!!!
相关文章推荐
- UITableView 实现汽车品牌(demo)
- UITableView 基本使用方法总结
- UITableView一些易混属性和方法
- UITableView的详细讲解
- 自定义uitableviewcell
- (转)UITableViewController重要配置方法和Delegate
- UITableView详细用法,UITableView指南,UITableView详细教程
- ios隐藏uitableview下面多余的tableview的线条
- 定制UITableViewCell的事件响应处理
- ios关于tableView的重用
- 关于IOS 开发 中的一些小技巧
- UITableView Plain下的section取消顶部粘连
- IOS UITableView 实现LOL数据展示
- iOS- UITableView
- 仿QQ控件图片下拉放大效果
- 通过修改父类,改变子类的cell的背景颜色及图片
- UITableView的组的自定义与cell的重用
- 关于UITableView的简单使用
- QQ分组
- iOS支持上下滚动的多输入框面板