我应该在使用reloadData之前清除表视图吗?

时间:2011-04-03 17:59:10

标签: iphone objective-c ios uitableview reloaddata

我想在表格视图中添加新值。

我的tableView:cellForRowAtIndexPath:有以下

if (cell == nil) { // do something }

当我删除顶部的if语句并使用reloadData时,应用程序崩溃了。在使用reloadData之前,是否需要清除表中的旧值?如果是这样的话? 感谢

修改

对不起,我并不是说reloadData放在tableView:cellForRowAtIndexPath:里面。我把它放在另一个方法中并从if (cell == nil) { // do something }

中删除了tableView:cellForRowAtIndexPath:

5 个答案:

答案 0 :(得分:2)

通过调用

中的reloadData来生成无限循环
tableView:cellForRowAtIndexPath:

答案 1 :(得分:2)

您应该阅读TableView Programming Guide以熟悉这些概念。 reloadData是一种最终调用tableView:cellForRowAtIndexPath:的方法。

答案 2 :(得分:1)

无需在表格视图中清除数据。您可能希望确保在UITableViewCell子类中正确实现-prepareForReuse,以便重用的单元格不显示旧数据。

BTW不清楚为什么要删除if (cell == nil)位。如果没有要重用的单元格(出列),则需要创建一个新单元格。如果你不这样做,你将返回nil,这将导致UITableView中的异常。

答案 3 :(得分:0)

您(99%的时间)无法从reloadData致电tableView:cellForRowAtIndexPath:。 这是因为reloadData最终会调用tableView:cellForRowAtIndexPath,因此您将获得一个永无止境的循环。

你需要解释更多你想要做的事情(以及一些额外的代码会很好),以便进一步回答这个问题。

答案 4 :(得分:0)

reloadData调用所有tableView数据源,因此你无法在cellForRowAtIndexPath中调用它,它将进行无限循环。