这是我的错误:
*** Assertion failure in -[PSUICollectionView _endItemAnimations], /SourceCache/UIKit_Sim/UIKit-2372/UICollectionView.m:2801
我这样称呼它:
[self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:1 inSection:1]]];
为什么会发生这种情况,有什么想法?
答案 0 :(得分:7)
您是否也从模型中删除了该项目?因此,例如,如果它们所呈现的行数,行数和内容是从数组字典中获取,其数组的键表示各部分,每个数组表示行,那么如果删除一行deleteItemsAtIndexPaths
,则表示负责相应地更新字典。 UICollectionView
不会为你做。
答案 1 :(得分:5)
请注意,您正尝试从第1部分删除索引1.索引和部分都从0开始。
我是这样做的:NSMutableArray *forms; // datasource item data for all the cells
int indexToDelete; // Set to the index you want to delete
...
[self.collectionView performBatchUpdates:^(void){
[forms removeObjectAtIndex:indexToDelete]; // First delete the item from you model
[self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexToDelete inSection:0]]];
} completion:nil];
答案 2 :(得分:1)
调用deleteItemsAtIndexPaths时,检查您的集合视图是否忙于其他内容:。 我遇到了与insertItemsAtIndexPaths:方法相同的问题,结果发现它是由我的代码中的错误引起的 - 我在调用[my collectionView reloadData]后立即调用[myCollectionView insertItemsAtIndexPaths:]。因此,在调用insertItemsAtIndexPaths时:我的集合视图正在重新加载其数据。修复此错误后,断言失败的问题已经消失。