在試圖從我的集合視圖中卸載一批圖像然後將其替換爲另一批的過程中,我遇到了一個錯誤,其中取決於原始或後續圖像組是否比預期的更換或多或少,會出現一個斷言錯誤,說:過期數據上的UICollectionView斷言錯誤
*** Assertion failure in -[UICollectionViewData validateLayoutInRect:],
/SourceCache/UIKit_Sim/UIKit-2891.1/UICollectionViewData.m:341
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'UICollectionView recieved layout attributes for a cell with an
index path that does not exist: <NSIndexPath: 0xb141c60> {length = 2, path = 0 - 2}
在這種情況下,圖像的現有列表計數爲5和圖像的新列表數爲2,所以,當它到了第三個圖像 - 發生異常 - 表示UI CollectionViewDataDelegate不知道數據流中的更改。
有關如何確保新圖像將被UICollectionView引用的任何建議?當然我叫'reloadData'...
謝謝
它肯定會出現一些陳舊數據的痕跡正在被對象訪問 - 因此搜索一個單元格,其索引可能超出了該部分引用的當前數據的範圍。在我的情況下,經過多次實驗,補救措施似乎是「[self.collectionView reloadSections:sections];」。在我這樣做後,當我向左或向右滑動collectionView時,異常不再被斷言。 – user1686700
我有類似的問題。我有兩個顯示相同數據的UICV。當用戶更改應用程序中的日期時,我請求新數據,然後在兩個CV上調用reloadData。這通過iOS6.1很好。當我運行更新的應用程序時,出現上述錯誤。切換到reloadSections:部分修復它,但添加了不需要的滯後和動畫(自定義流佈局)。你有沒有取得任何進展? – VaporwareWolf
當我返回具有不應存在的索引路徑的佈局屬性時,會根據數據源返回的每個節中的節數和項目數得到此問題!花了我一段時間來弄清楚這一點。如果您有動態模型,請確保節/項目路徑與佈局屬性路徑對齊。 – andrewz