2015-06-21 33 views
0

我有一個UICollectionView,我在UICollectionViewCell子類中重寫setSelected,以便在用戶選擇單元格時執行一點反彈動畫。如何在使用reloadData時執行單元格選擇動畫?

問題在於,在選擇單元格時,單元格的非常選擇會改變其他單元格的數據(例如,想象其他單元格中每個單元格都有一個標籤,顯示的單元格數量已被選定) 。所以我打電話collectionView.reloadData(),以便所有其他單元格更新以及顯示新數據(例如,在標籤中選擇的單元格數量)。

但是,此reloadData()調用似乎完全重置UICollectionView。任何發生的動畫都會停止,並且單元格會在沒有動畫的情況下進行更新。

如何讓單元格選擇動畫,同時更新其他單元格?

只有在動畫完成後,我才嘗試調用reloadData(),但這會使其看起來像更新其他單元格時有延遲/延遲(因爲它不會在動畫完成後立即更新它們),這看起來不太好。

同樣,我試過調用reloadItemsAtIndexPaths:(並排除選中的將會動畫的單元格),但無論出於何種原因與集合視圖,此方法看起來好像真的是慢。就像按下它後有明顯的滯後。

我應該在這裏做什麼?沒有收集視圖破壞正在進行的動畫的情況下重新加載數據的標準是什麼?

+0

我會這樣做的方式是等待動畫完成,然後調用reloadData()。如果您允許同時進行多個選擇,則可以在執行reloadData()調用之前,讓您的動畫完成視圖查看是否有其他動畫正在運行的變量。 –

回答

1

重新加載拋棄現有單元格並創建(或重新使用)新單元格。所以任何動畫都會被內在破壞。所以,不要重新加載。

相反,像往常一樣更新數據模型,然後獲取當前可見的索引路徑和關聯的單元格,並直接更新這些單元格。

相關問題