2013-01-03 181 views
2

我不確定這是一個功能還是一個錯誤,但是當我在使用同一個實例UICollectionViewFlowLayout的視圖控制器上有兩個集合視圖時,會發生一個有趣的事情。請注意,我沒有使用Interface Builder/XIB作爲其中的任何一個;我將所有內容都放在代碼中。兩個UICollectionView實例共享相同的UICollectionViewFlowLayout實例嗎?

第一UICollectionView有十二個細胞,但第二個具有20當我重裝都收集意見,當作兩人contentSize酒店有20個細胞在其中。這意味着當我滾動到第一個UICollectionView的右側並通過第一個(也是唯一的)12個單元格時,我的應用程序崩潰(因爲我從只有12個單元格的數據中提取數據)。

現在爲了解決這個問題,我正在實例化兩個相同的對象,並將每個對象分配給它自己的集合視圖。這是正常的行爲嗎?

我只是開始用UICollectionViews編寫代碼,所以請原諒我的無知,如果我泄露任何!

回答

4

不要這樣做。集合視圖和佈局對象應該是1:1關係。該佈局對象有一個屬性,collectionView,顯然它只能保存對一個集合視圖的引用。

當集合視圖然後詢問佈局的大小等等時,佈局對象將基於您分配佈局的第二個集合視圖上的所有內容,因爲這將保留在collectionView屬性中。

我無法在文檔中找到顯式聲明不在共享視圖之間共享佈局對象,但上面討論的屬性應該清楚地表明這不是預期的用途。

+0

你搖滾,先生。很好的說明! –