iPad UITableView闪烁问题

问题描述:

我有一个UITableView,在iPad的视口中包含大约20行。我有一个间隔定时器,定期调用UITableView'sreloadData(将其发布到UI线程)。iPad UITableView闪烁问题

现在,当我以中等速度滚动UITableView(不那么快)时,UITableView将刷新闪烁效果。

我必须编写一个函数来手动更新UITableViewCell标签,方法是循环访问数组中的所有项目(此数组保留所有显示在UITableView上的项目)。我将在定时器运行时执行此功能,而不是调用reloadData(如上所述)。然后闪烁的问题消失了。

我认为reloadData应该比遍历所有数据更好,因为reloadData只刷新当前显示的单元格而不是所有的行,但我无法弄清楚为什么会发生闪烁。有人知道为什么

我不得不提的一件事是我确实使用了CellIdentifier来重新使用该单元格,并且只在检索到的单元格为空时才创建单元格。

此外,我没有在iPhone的这个问题,我相信,这是因为iPhone有比iPad更少的行。

任何人都可以对这个问题做一些解释吗?

+0

你有没有尝试'[tblMsgConverstion beginUpdates]; [tblMsgConverstion endUpdates];'? – 2013-04-11 05:03:35

+0

@NitinGohel嗨,你介意怎么做?在'beginUpdates'和'endUpdates'之间放置reloadData? – GMsoF 2013-04-12 04:16:10

我在使用reloadData时出现闪烁的问题。我通过使用indexPathsForVisibleRowscellForRowAtIndexPath:来解决它,只更新可见单元格。性能很好,因为我不必遍历整个数据集,只需要有限数量的可见单元。

reloadData会导致tableview在屏幕上重新创建可见单元格,这会导致闪烁,因为单元格会被破坏。有更好的方法来重新加载tableview。你在使用核心数据吗?如果是这样,NSFetchedResultsController和它的delegate是更新tableview的好方法,因为它监听基础数据源中的更改并仅更新适当的单元格。