2

我有一個UICollectionView我喜歡工具選擇容器。您有許多工具(單元格),當您選擇一個工具時,前一個選定的工具將被取消選中,依此類推......您一次只能選擇一個工具。UICollectionView選擇不會持續

問題是我無法管理選擇單元格。當我點擊單元格時,調用collectionView:didSelectItemAtIndexPath:。然後使用[collectionView reloadItemsAtIndexPaths:@[indexPath]]重新加載選定單元格以更改其外觀(我更改圖像的alpha)。

那麼重新加載單元格確定,除了一件該死的事情:在collectionView:cellForItemAtIndexPath:單元格永遠不會將selected屬性設置爲YES!所以我永遠不能改變alpha,因爲我永遠不知道什麼時候我必須畫出一個選定的單元格。

更糟糕:[collectionView indexPathsForSelectedItems]永遠是空的!

我甚至不提collectionView:didDeselectItemAtIndexPath:是從來沒有所謂的...

那麼,如果有人能幫助我明白是怎麼回事,在此先感謝...

+0

+1 ..不錯的問題。我試圖解決您的問題。但我失去了我的控制:) –

+0

感謝您的嘗試,你可以停止@達爾頓克萊布魯克的解決方案是一個! – Zaphod

回答

6

當你調用reloadItemsAtIndexPaths:集合視圖丟棄這些單元並創建新的單元,因此丟棄單元的選定狀態。

我建議幾個不同的選擇:

1)在collectionView:didSelectItemAtIndexPath:調用cellForItemAtIndexPath:去選定單元格的引用和更新它的外觀上。

2.)(My Favorite)如果您還沒有使用UICollectionViewCell的自定義子類,並覆蓋方法setSelected:。在單元格被選中時,您會收到通知,您可以從子類中更新外觀。

+0

謝謝!我使用第二個,因爲我正在使用自定義子類。格拉茨! – Zaphod