2011-04-03 100 views
0

我想在表格视图中添加新值。我应该在使用reloadData之前清除表视图吗?

tableView:cellForRowAtIndexPath:具有以下

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

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

编辑:

我很抱歉,我没有意思,我把里面reloadDatatableView:cellForRowAtIndexPath:。我把它里面的另一种方法和去除if (cell == nil) { // do something }从内tableView:cellForRowAtIndexPath:

回答

2

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

2

你产生无限循环调用reloadData内

tableView:cellForRowAtIndexPath: 
0

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

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

0

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

1

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

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

相关问题