2015-06-21 90 views
0

我有一个UICollectionView,我在UICollectionViewCell子类中重写setSelected,以便在用户选择单元格时执行一点反弹动画。如何在使用reloadData时执行单元格选择动画?

问题在于,在选择单元格时,单元格的非常选择会改变其他单元格的数据(例如,想象其他单元格中每个单元格都有一个标签,显示的单元格数量已被选定) 。所以我打电话collectionView.reloadData(),以便所有其他单元格更新以及显示新数据(例如,在标签中选择的单元格数量)。

但是,此reloadData()调用似乎完全重置UICollectionView。任何发生的动画都会停止,并且单元格会在没有动画的情况下进行更新。

如何让单元格选择动画,同时更新其他单元格?

只有在动画完成后,我才尝试调用reloadData(),但这会使其看起来像更新其他单元格时有延迟/延迟(因为它不会在动画完成后立即更新它们),这看起来不太好。

同样,我试过调用reloadItemsAtIndexPaths:(并排除选中的将会动画的单元格),但无论出于何种原因与集合视图,此方法看起来好像真的是慢。就像按下它后有明显的滞后。

我应该在这里做什么?没有收集视图破坏正在进行的动画的情况下重新加载数据的标准是什么?

+0

我会这样做的方式是等待动画完成,然后调用reloadData()。如果您允许同时进行多个选择,则可以在执行reloadData()调用之前,让您的动画完成视图查看是否有其他动画正在运行的变量。 –

回答

1

重新加载抛弃现有单元格并创建(或重新使用)新单元格。所以任何动画都会被内在破坏。所以,不要重新加载。

相反,像往常一样更新数据模型,然后获取当前可见的索引路径和关联的单元格,并直接更新这些单元格。

相关问题