我想在表格单元格中有一个闪烁的图像(在两个图像之间交换)。
对我来说最自然的情况如下:
- 将 NSTimer 设置为每 0.5 秒运行一次,调用 -blink:
- 在 -blink 中:我打开/关闭一个 blinkStatus 变量
- 在 -cellForRowAtIndexPath: 中,我根据 blinkStatus 设置图像
现在,我还在 -blink: 方法中调用 [myTableView reloadData],因此认为得到更新。
这似乎是有道理的;单元格的状态实际上正在改变(图像正在改变),因此更新表格是有意义的。
这行得通。 但是,reloadData 似乎会干扰用户交互:
在表格编辑模式下,如果用户选择(-)删除,并出现 Delete 按钮,当 reloadData 发生时它会消失。如果 [myTableView.editing] 为假,则仅执行 reloadData 就很容易了。(而且在编辑模式下不闪烁也不是什么大问题。)
然而,reloadData 似乎仍然把事情搞砸了(例如清除单元格选择)。我还担心每 0.5 秒调用一次 reloadData 的效率。
有没有更流畅的方法让图像闪烁?我正在考虑保存指向任何闪烁单元格的指针,并更新计时器中的 .image 属性。但这似乎是个坏主意,因为单元格被重复用于表的不同行(哎哟),我怀疑简单地更新 .image 属性会在没有 reloadData 的情况下更新表。