2010-06-04 61 views

回答

17

整个表视图重新加载,它调用的cellForRowAtIndexPath让您的所有行和部分细胞......它这样做也要求实现代码如下数据源等等等等

的数据源的tableView和numberOfRows方法numberOfSections方法
+0

它应该调用cellForRowAtIndexPath。有时它根本没有。 – 2012-06-06 08:49:22

+1

@JimThio我有这个确切的问题,你知道一个解决方案,为什么我重新加载数据后,我的cellForRowAtIndexPath没有被调用? – vinylDeveloper 2013-08-26 17:13:10

+0

您是否发现了为什么cellForRowAtIndexPath不会通过向tableView发送reloadData消息来调用的答案? – Beanno1116 2015-08-09 01:43:37

1

另外,为了将来的参考,这些信息可以在文档here中找到。从Apple文档复制/粘贴:

调用此方法重新加载用于构造表的所有数据,包括单元格,节标题和页脚,索引数组等等。为了提高效率,表格视图仅重新显示那些可见的行。如果表格由于重新加载而缩小,它会调整偏移量。表视图的委托或数据源在希望表视图完全重新加载其数据时调用此方法。在插入或删除行的方法中不应调用它,尤其是在调用beginUpdates和endUpdates所实现的动画块中。

0

对于接受答案非常好。但我想提及所有可见的单元格将被重新创建。通常这不是什么大不了的事。但是,如果你的tableViewCell存储属性包含一些数据可能会丢失。

例如,点击tableViewCell上的按钮,从互联网上请求一些数据,并将检索到的数据保存到存储的属性中。如果你reloadData,那么检索到的数据将会丢失。当然,这实际上并不适合从tableViewCell发出请求。但只是想解释这种情况。