一、解决方案
1、设置datasource属性后,应该再次调用reloaddata方法。(另一篇博文里总结的一句话,很管用的)
2、是否设置代理与数据源
3、numberOfSectionsInTableView 是否设置
4、numberOfRowsInSection 方法返回值是否正确,如果不正确,就不会执行后续方法(执行顺序见二)。
5、检查table是否被其他view遮挡。
6、还有可能是autolayout引起的,auotolayout约束不对,也会导致tableview显示不出来。
以上都符合的话,肯定会正确执行代理方法,tableview也会正常显示。Good luck!
二、代理方法执行顺序如下:
第一轮:
1、numberOfSectionsInTableView :假如section=2,此函数只执行一次,假如section=0,下面函数不执行,默认为1
2、heightForHeaderInSection ,执行两次,此函数执行次数为section数目
3、heightForFooterInSection ,函数属性同上,执行两次
4、numberOfRowsInSection ,此方法执行一次
5、heightForHeaderInSection ,此方法执行了两次,我其实有点困惑为什么这里还要调用这个方法
6、heightForFooterInSection ,此方法执行两次,
7、numberOfRowsInSection,执行一次
8、heightForRowAtIndexPath ,行高,先执行section=0,对应的row次数
第二轮:
1、numberOfSectionsInTableView ,一次
2、heightForHeaderInSection ,section次数
3、heightForFooterInSection ,section次数
4、numberOfRowsInSection ,一次
5、heightForHeaderInSection ,执行section次数
6、heightForFooterInSection,执行section次数
7、numberOfRowsInSection,执行一次
8、heightForRowAtIndexPath,行高,先执行一次
9、cellForRowAtIndexPath
10、willDisplayCell
然后8、9、10依次执行直到所有的cell被描画完毕