2016-09-12 95 views
-1

我想從CollectionView中刪除第二個項目。我用這行代碼使用Swift從CollectionView刪除項目

self.collectionView?.deleteItemsAtIndexPaths([NSIndexPath(forItem:1, inSection:0)]) 

我得到這個錯誤

「NSInternalInconsistencyException」,理由是:「無效的更新:無效 數量的項目在第0包含在 的項目數更新後(31)的現有部分必須等於更新前(31)的該部分中包含的 項的數量,正或負 從該部分插入或刪除的項目數(插入0個,刪除 1)並加上或減去移入的項目數量出入 該部分(移入0,移出0)'。

+0

您需要刪除dataSource中的對象(無論是NSArray還是NSDictionary),然後執行'collection。 deleteItemsAtIndexPaths()'。現在的問題是,'collectionView:numberOfItemsInSection:'和/或'numberOfSectionsInCollectionView:'返回錯誤的信息。 – Larme

回答

0

我可以告訴你,你提供的行本身並不是不正確的。這是你放置它的背景,這是問題。既然你沒有給出任何上下文,我會假設這是因爲你沒有首先更新集合視圖的數據源來反映你想要的視圖本身。也就是說,您必須先從數據源中刪除該項目,然後從視圖中將其刪除。

+0

如果我只是從數據源中刪除項目並重新載入數據,我爲什麼要調用deleteItemsAtIndexPaths?這不會從視圖中刪除它? – user567

+1

如果您從數據源中刪除,然後調用'deleteItemsAtIndexPaths'方法,它將執行一個很好的動畫。否則,如果你只是重新加載數據,它會顯示爲被刪除的項目就會消失。 – Slayter