所以我有圖像的colectionView
,當東西在後臺會發生,我可能會嘗試使用該方法來選擇特定的自定義collectionViewCell
:爲什麼在代碼中選擇單元格後,我的自定義集合意外地顯示爲零?
self.collectionView.selectItemAtIndexPath(indexPathToReload, animated: true, scrollPosition: UICollectionViewScrollPosition.CenteredVertically)
,工作正常,在collectionView
滾動到所需的位置。
但是,如果我然後嘗試實際更新單元格的外觀,因爲它已通過調用self.collectionView(self.collectionView, didSelectItemAtIndexPath: indexPathToReload)
進行更新,所以當我嘗試在didSelectItemAtIndexPath
中創建單元格時,出現意外的零單元格。
我部分明白,爲什麼更新細胞的這種方法是不安全的(因爲我已經在研究類似here in one of the answers這個問題在其他地方閱讀。)
因此,碰撞讓我假設細胞是不可見的部分細胞在屏幕上,這就是爲什麼當我嘗試創建它時單元格爲零。但是這樣做沒有意義,因爲我也假定必須創建單元格才能滾動到正確的位置,正如我所說的那樣,罰款是因爲它們按預期方式創建並且可以毫無問題地進行交互。
那麼爲什麼我的細胞零?或者爲什麼我的集合視圖不認爲滾動到可見單元格的單元格?如果原因很明顯,那麼在代碼中選擇它時如何才能更新它的外觀?
編輯:代碼在上下文中
dispatch_async(dispatch_get_main_queue()) {
self.collectionView.selectItemAtIndexPath(indexPathToReload, animated: true, scrollPosition: UICollectionViewScrollPosition.CenteredVertically)
self.collectionView(self.collectionView, didSelectItemAtIndexPath: indexPathToReload)
return
}
正如我已經說過了,這幾乎是上下文。在第一行中,我可以滾動到屏幕上不可見的索引。如果我這樣做,然後執行第二行代碼,則在調用的委託方法中創建的單元格意外爲零。
分享一些你的代碼,所以我們可以看到它在上下文。 –
這幾乎是上下文,但我會更新我的答案。 – pbush25
調用'selectItemAtIndexPath'應該自動觸發'didSelectItemAtIndexPath'上的調用。你爲什麼要調用它像'self.collectionView(self.collectionView,didSelectItemAtIndexPath:indexPathToReload)'? – Abhinav