UITableView 单元重用导致 NSTimer 问题

Posted

技术标签:

【中文标题】UITableView 单元重用导致 NSTimer 问题【英文标题】:UITableView cell reuse causing NSTimer problems 【发布时间】:2010-11-19 23:55:05 【问题描述】:

我有一个 UITableView 和我构建的自定义单元格。该单元格有几个标签,一个开始按钮和一个停止按钮,以及一个从按钮触发和停止的 NSTimer。

标签显示来自 sqllite 的数据(通过核心数据),计时器为每个单独的单元格单独运行。

这一切都很好,直到我有更多的单元格并且单元格重用被触发。那时,每个单元格在其标签中显示正确的数据,但是如果我为第一个单元格启动计时器,当它滚出屏幕时,显示的下一个单元格(并随后重用前一个单元格)的计时器将按好吧。

我不知道如何保证每个单元格都有自己的计时器线程,并且可以重用单元格。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:

在您的情况下,单元格具有内部状态(计时器)。当单元格被重用时,它的状态会丢失(甚至值得重用的单元格将继承先前的状态)。你有两个选择

不要重复使用单元格 使单元格无状态(例如,将计时器移至控制器)

【讨论】:

不重用单元格是愚蠢的,但是使单元格无状态是人们应该始终解决问题的方法。仅在这一点上 +1。 您的回答帮助我了解了每个细胞维持的状态级别。我能够在单元格内维护我的计时器并相应地管理显示的数据。再次感谢。

以上是关于UITableView 单元重用导致 NSTimer 问题的主要内容,如果未能解决你的问题,请参考以下文章

UItableViewCell 重用导致控件多次加载 去除cell重用导致 视图控件多次加载问题

UITableView 和单元格重用

单元格重用后 UITableView 不更新 UIButton

UITableView - 在编辑模式下重用单元格

UITableView 不重用单元格?

UITableView indexPath 和最大可重用单元格数