Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 表格单元格中的闪烁图像_Objective C_Xcode_Uitableview - Fatal编程技术网

Objective c 表格单元格中的闪烁图像

Objective c 表格单元格中的闪烁图像,objective-c,xcode,uitableview,Objective C,Xcode,Uitableview,我想在表格单元格中有一个闪烁的图像(在两个图像之间交换) 我觉得最自然的是: 将NSTimer设置为每0.5秒运行一次,调用-blink: In-blink:我打开/关闭blinkStatus变量 在-cellforrowatinexpath:,我根据闪烁状态设置图像 现在,我还在-blink:方法中调用[myTableView reloadData],因此认为需要更新 这似乎是有道理的;单元格的状态实际上正在更改(图像正在更改),因此更新表是有意义的 这很有效。但是,重新加载的数据似乎会干

我想在表格单元格中有一个闪烁的图像(在两个图像之间交换)

我觉得最自然的是:

  • 将NSTimer设置为每0.5秒运行一次,调用-blink:
  • In-blink:我打开/关闭blinkStatus变量
  • 在-cellforrowatinexpath:,我根据闪烁状态设置图像
现在,我还在-blink:方法中调用[myTableView reloadData],因此认为需要更新

这似乎是有道理的;单元格的状态实际上正在更改(图像正在更改),因此更新表是有意义的

这很有效。但是,重新加载的数据似乎会干扰用户交互:

在表格编辑模式下,如果用户选择(-)进行删除,并且出现删除按钮,则在重新加载数据时,删除按钮将消失。如果[myTableView.editing]为false,则只需重新加载数据就足够简单了。(在编辑模式下不闪烁也不是什么大问题。)

但是,重新加载的数据似乎仍然会把事情搞砸(例如,清除单元格选择)。我还担心每0.5秒调用重载数据的效率


有没有更平滑的方法让图像闪烁?我正在考虑保存指向任何闪烁单元格的指针,并更新计时器中的.image属性。但这似乎是一个坏主意,因为单元格被重复用于表的不同行(哎哟),我怀疑简单地更新.image属性是否会在不重新加载数据的情况下更新表。

只要使用正确的接口,就应该在
-blink
方法中切换图像(如
cell.imageView.image
)则图像将自动更新,无需调用
reloadData

是否尝试使用
[UIImageView animationImages]
属性?
只需提供图像,设置所需的持续时间和动画重复计数并调用startAnimating

,但如果用户滚动,可重用的单元格对象可能会被重用以显示其他数据,因此任何cell.imageView.image都不会引用正确的内容。我会闪烁相同的重用单元格,而不是相同的数据。您传递
indexPath
for将给定的单元格添加到
blink
方法中,然后在其中调用
cellforrowatinexpath
以获取正确的单元格实例。我认为这是错误的。cellforrowatinexpath仅用于系统调用以分配/重用/填充UITableCell以用于显示目的,而不是用于调用主代码。(这样做会得到一个自己的单元格,但不是有用的或系统显示的内容。)即使你挂起一个指向UITableCell的指针,它也会在滚动时被重复使用,你会眨错眼睛。当你直接在tableview上调用它时,你会得到实际的单元格实例。当tableview在数据源上调用它时,它会分配或释放一个新实例。这非常有效。谢谢!(如果您能告诉我如何在多个单元格之间同步闪烁,则可获得额外积分。)