tableViewCell冻结有一些问题。我有一个表视图单元格和一个练习列表。当我在另一个viewController上添加一个新的练习,然后弹出这个列出所有练习的tableViewController,相应的单元格就会被冻结(参见屏幕截图)。然后,如果我打电话给[self.tableCell reloadData],那个细胞就永远不会更新。
这很奇怪,因为如果违规的单元格是索引#4,并且我将数据源更改为只有两个项,那么第四个单元格仍然是冻结的。(前两个渲染正确,第三个是空白,第四个是违规单元格)
所有练习清单:

当我更改tableView数据源中的数据时,该单元格仍然被冻结:

如果我放置一个断点并检查tableView,它并没有提到冻结的单元格:

不知道从这里往哪里走:(似乎只有当我从一个不同的viewController插入一行,然后弹出这个行时才会发生这种情况。
有什么想法吗?非常感谢你的帮助!
发布于 2013-10-07 07:21:51
您正在保存对单元格的引用。那是个坏主意。它与整个数据源和表格单元的循环模式相矛盾。各种各样的怪胎将是不可避免的结果。
相反,您应该确保数据源方法返回正确的节数和行数以及适当的单元格,然后重新加载表而不是单元格。
[self.tableView reloadData]; 因此,例如,当视图从添加新项返回时,请确保正在使用的数据数组被更新并重新加载。
发布于 2013-10-07 07:36:17
我完全不理解您管理表视图以及数据源的方法。如果您对数据源进行了任何更改,也应该在tableview中反映相同的更改。(两者应该同步)。您可以使用:
Table reloadRowsAtIndexPaths: Table deleteRowsAtIndexPaths: Table insertRowsAtIndexPaths:
若要更改表视图及其单元格,请执行以下操作。或者你可以直接打电话给[Table reloadData]
记住:永远不要试图存储UITableViewCells的引用,因为它们再次在屏幕上被删除--您的引用将只是一个垃圾。只需改变你的细胞使用上述3种方法,你是好的去。如果你想清理什么东西,就去问吧。
https://stackoverflow.com/questions/19216470
复制相似问题