2012-11-03 41 views
4

我遇到了[UICollectionView reloadData]問題,在我指定的委託中,它似乎卡住了很長一段時間,然後才調用numberOfSectionsInCollectionView。這是發生了什麼事情:UICollectionView卡在reloadData中

該應用程序以UICollectionView立即可見並且在代理上調用numberOfSectionsInCollectionView,該代理返回空數組中的項目數(即0),並立即開始從該數組下載數據一個Web服務。一旦下載完成,數據被反序列化並添加到上述數組中,然後在UICollectionView實例上調用reloadData。這是應用程序似乎停止做任何事的地方,在20-30秒(或有時長達一分鐘)之後,代表接到致電numberOfSectionsInCollectionView。一旦收到此呼叫,重新加載就會很快完成。

我相信reloadData運行在自己的線程,但我試過在單獨的線程中啓動它,以確保它不是我的任何代碼阻塞進程。 reloadData在卡住的時候可以做些什麼?我應該實施reloadDatanumberOfSectionsInCollectionView之間是否有任何中介委託方法?就iOS開發人員而言,我認爲這是第一個在重新加載後調用的方法。

如果有人能告訴我什麼可能會出錯,太棒了,但我也很感激任何提示如何調試!

+1

確保在主線程上調用reloadData。另外請確保您不要從後臺線程修改後備數組。 – Felix

+0

Genius @ phix23!做出答覆,以便我可以接受你的答案。 – Merott

回答

13

不要從後臺線程做UIKit的東西。因此,確保在主線程上調用reloadData,並且不要從後臺線程修改後備數組。

+0

謝謝!問題在於'reloadData'沒有被主線程調用。 – Merott

+0

@ phix23是否有可能獲得有關reloadData何時完成而不將其放入主線程的信息? –

+0

http://stackoverflow.com/questions/18796891/uicollectionview-reloaddata-not-functioning-properly-in-ios-7/20386007#20386007 –

相關問題