2015-03-31 27 views
0

如果我嘗試在有0個部分和0個項目時將項目插入到UICollectionView中,則會出現斷言失敗。將第一個單元格插入到集合視圖導致斷言失敗

***終止應用程序由於未捕獲的異常「NSInternalInconsistencyException」,理由是:「無效的更新:無效 節數。更新(1)後集合 視圖中包含的部分數量必須等於更新前的集合視圖中包含的部分數量 (0),正數或負數 插入或刪除的部分數(0插入,0刪除)。'

經典。問題是,我正在修改我的數據源,然後直接插入項目。 showFirstCell屬性在所有必要的數據源方法中被檢查,並且在其他任何地方都不會被修改。

self.showFirstCell = true 
self.collectionView.insertItemsAtIndexPaths([NSIndexPath(forItem: 0, inSection: 0)]) 

包裝在performBatchUpdates沒有改變。

我想要以動畫形式添加此項目。我認爲我不應該首先檢查是否有物品已經到位,但是這樣做並且呼叫reloadData可以起作用,但它並不完美。

回答

1

您的節數不匹配。

一旦您決定輸入UICollectionView的部分,您應該在numberOfSections函數中返回相同的編號。

現在發生的事情是,您插入一個單元格,它再次調用您的函數numberOfSections,您仍然返回0,並且它立即崩潰。

+1

呵呵。您必須插入一個部分以及一行。當然,非常感謝。在〜5分鐘內回答接受。 – Acey 2015-03-31 21:15:29

+0

@Acey真棒。祝你有個好的一天。乾杯 – 2015-03-31 21:16:15

0

它沒有工作,並給你一個錯誤的原因是因爲你的numberOfSections設置爲0,當你添加單元時,它沒有更新。

要解決該問題,只需創建(如果您還沒有)NSMutableArraynumberofSections,請返回mutableArray。然後,無論何時將對象添加到collectionView,只需將對象添加到部分的mutableArray即可。

接下來也是最重要的部分是:無論何時您更改,添加或刪除collectionView中的某些內容,只需執行beginUpdatendUpdate即可。

-1

如果你想從你的CollectionView中插入項目,你需要 從你的數組中的數據源中插入該項目。在這個例子中,我將項目插入myArray ,然後我將它也插入myCollectionView。它正在工作,因爲 您的數組(數據源)中的項目總數等於 collectionView中的項目數。

myArray.insert(valuetoinsert, atIndex: 0) 
let path:NSIndexPath = NSIndexPath.init(row: 0, section: 0) 
myCollectionView.insertItems(at: [path as IndexPath]) 
相關問題