首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UITableViewCell被冻结(而不是用新的数据重新复制)。怎么修?

UITableViewCell被冻结(而不是用新的数据重新复制)。怎么修?
EN

Stack Overflow用户
提问于 2013-10-07 03:03:12
回答 2查看 172关注 0票数 0

tableViewCell冻结有一些问题。我有一个表视图单元格和一个练习列表。当我在另一个viewController上添加一个新的练习,然后弹出这个列出所有练习的tableViewController,相应的单元格就会被冻结(参见屏幕截图)。然后,如果我打电话给[self.tableCell reloadData],那个细胞就永远不会更新。

这很奇怪,因为如果违规的单元格是索引#4,并且我将数据源更改为只有两个项,那么第四个单元格仍然是冻结的。(前两个渲染正确,第三个是空白,第四个是违规单元格)

所有练习清单:

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

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

不知道从这里往哪里走:(似乎只有当我从一个不同的viewController插入一行,然后弹出这个行时才会发生这种情况。

有什么想法吗?非常感谢你的帮助!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-07 07:21:51

您正在保存对单元格的引用。那是个坏主意。它与整个数据源和表格单元的循环模式相矛盾。各种各样的怪胎将是不可避免的结果。

相反,您应该确保数据源方法返回正确的节数和行数以及适当的单元格,然后重新加载而不是单元格。

代码语言:javascript
复制
[self.tableView reloadData]; 

因此,例如,当视图从添加新项返回时,请确保正在使用的数据数组被更新并重新加载。

票数 1
EN

Stack Overflow用户

发布于 2013-10-07 07:36:17

我完全不理解您管理表视图以及数据源的方法。如果您对数据源进行了任何更改,也应该在tableview中反映相同的更改。(两者应该同步)。您可以使用:

Table reloadRowsAtIndexPaths: Table deleteRowsAtIndexPaths: Table insertRowsAtIndexPaths:

若要更改表视图及其单元格,请执行以下操作。或者你可以直接打电话给[Table reloadData]

记住:永远不要试图存储UITableViewCells的引用,因为它们再次在屏幕上被删除--您的引用将只是一个垃圾。只需改变你的细胞使用上述3种方法,你是好的去。如果你想清理什么东西,就去问吧。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19216470

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档