UITableView单元重用导致NSTimer问题

时间:2010-11-19 23:55:05

标签: objective-c cocoa-touch uitableview ios4

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

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

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

我无法弄清楚如何保证每个单元都有自己的定时器线程并重复使用单元。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:5)

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

  • 不要重复使用细胞
  • 使单元格无状态(例如将您的计时器移动到控制器)