(1)在使用UITableView时经常会出现代理或者数据源方法不走的情况,遇到这类情况很多人就着急了,我要告诉你的是,不要着急,肯定是你的代码出现问题了,如何查找到问题出在哪个地方呢?
第一步:仔细看看你的TableView是不是添加到父视图上边了,没有添加上去当然不会它的代理和数据源方法了;
第二步:你的代理和数据源写了吗?如果只写了数据源没有写代理那就把两个都写上,这里是为了更安全;
第三步:是不是只走了返回单元格个数的方法而没有走返回单元格的方法,这个情况要根据你的单元格的创建方法来判断,单元格创建最简单的是直接创建,这个情况出问题的很少,不过你也要看看是不是你创建的单元格子类化了,单元格的本类是不是子类化的那个类;复用了单元格的情况,解决思路和直接创建一样,值得注意的是单元格的identifier一定不要有重复的;借助xib的情况,xib中的identifier和从复用池中拿的单元格的identifier一样吗?到这步还没解决问题?
第四步:把动态返回单元格的高度的方法写上,把父视图的automaticallyAdjustsScrollViewInsets属性设置为NO,为什么呢?往父视图上添加的第一个视图是UIScrollView以及它子类的对象的时候,会自动往下偏移64个像素,但是这和数据源方法不走又有多少关系呢?只能告诉你,这是经验总结。。。。
(2)还有遇到明明子类化了一个UITableViewCell,但是一运行就说子类化的类不存在,或者是让你从Nib中获取,不要推卸责任到Xcode上,是你之前创建了一这样一个类,然后把它给删了,又创建了一个名字一样的类,这时候把Xcode清空一下缓存吧,如果还不行,自己犯下的错,含着泪也要重新创建一个类,注意不要再用你删除的类命名,记得把单元格的类名改一下哦!!那告诉你从Nib中获取单元格呢?同样的原因,操作办法和刚才一样。。。不要嫌麻烦,程序员就是制造麻烦然后解决麻烦的!!
(3)创建的tableView有时候会往下偏移,还是automaticallyAdjustsScrollViewInsets惹的祸,还有时候最后一个单元格只显示了一部分,这就要看你创建的tableView时候的frame怎么设置的,有导航控制器和标签控制器的时候它都会自动偏移的,这种问题的解决办法就是用tableView的contentInset属性把tableView的偏移量改过来。
使用UICollectionView也会遇到上面这些问题,一步一步来,问题都会解决的,在UICollectionView中还可能是因为用的不是UICollectionViewFlowLayout,再确定你的代理写的是UICollectionViewDelegateFlowLayout,还有注册单元格的类名对吗?
总之出现问题首先考虑的是代码那个地方出错了,永远不要相信的自己代码是完美的,旺旺你认为最没有错误的地方会出现问题。。。。