2016-09-12 51 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