关于UITableView的一点使用心得

来源:互联网 发布:手机游戏直播软件 编辑:程序博客网 时间:2024/05/17 03:12

1.如何在使用重用池的情况下设置UITableViewCell的style
如果在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定义为该类型的就可以了
这里写图片描述

以上是本人在学习过程中自己总结出来的一下小知识点,如有不足或者说的不对的地方,还请各位前辈指教!!!欢迎大家补充和纠错!!!

0 0
原创粉丝点击