0

我想将新值放在表格视图中。

tableView:cellForRowAtIndexPath:的有以下

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

当我删除顶部的 if 语句并使用reloadData应用程序崩溃时。使用前是否需要清除表中的旧值reloadData?如果有怎么办?
谢谢

编辑:

对不起,我不是说我放进reloadDatatableView:cellForRowAtIndexPath:。我把它放在另一个方法里,然后if (cell == nil) { // do something }从里面取出tableView:cellForRowAtIndexPath:

4

5 回答 5

2

您正在通过在里面调用 reloadData 来生成无限循环

tableView:cellForRowAtIndexPath:
于 2011-04-03T18:06:01.370 回答
2

您应该阅读TableView 编程指南以熟悉这些概念。reloadData是最终调用的方法tableView:cellForRowAtIndexPath:

于 2011-04-03T18:06:54.287 回答
1

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

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

于 2011-04-05T04:31:49.003 回答
0

您(99% 的时间)无法reloadDatatableView:cellForRowAtIndexPath:. 这是因为reloadData最终调用tableView:cellForRowAtIndexPath,所以你得到一个永无止境的循环。

为了进一步回答这个问题,您需要解释更多您想要做什么(并且一些额外的代码会很好)。

于 2011-04-03T18:06:08.423 回答
0

reloadData 调用所有 tableView 数据源,所以你不能在 cellForRowAtIndexPath 中调用它,它会无限循环。

于 2011-04-03T18:09:03.103 回答