UITableView的代理方法不执行的解决方案

一、解决方案

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被描画完毕

你可能感兴趣的:(Xamarin.ios)