UITableView可重用单元格问题

时间:2010-09-12 13:08:14

标签: iphone objective-c ipad ios4

我有一个UITableView,它的数据从服务器连接刷新。对于UITableViewcell,我在行中布局了一些标签。因此它可以视为具有UILabel的网格(标签总数=表行*表列)。

当数据刷新时,我为UILabel添加了一个动画,以突出显示表格单元格更新。(标签背景颜色改变约0.5秒并恢复到之前的背景颜色)。在那里,我将旧值与新值进行比较,然后我添加了动画并进行了比较。它工作正常。

我的问题是当我滚动表格时,由于可重复使用的单元格标签正在动画化。(尽管相应的值不会改变)。任何人都知道如何避免这个问题?谢谢。

1 个答案:

答案 0 :(得分:3)

听起来你正在调用reloadData并在tableView:cellForRowAtIndexPath:中设置动画。不要这样做。不能保证UITableView会重用相同的单元格(听起来就像它一样,但依赖于此是不明智的,我很确定它不适用于reloadRowsAtIndexPath:withRowAnimation:)。例如,如果你删除一行,它会做错事。

您可以使用-[UITableView visibleCells]获取当前可见单元格的数组。循环遍历数组并使用自定义方法告诉每个单元格重新加载动画。