deleteItemsAtIndexPaths中的UICollectionView断言失败

时间:2012-12-04 16:17:00

标签: iphone ios xcode uicollectionview

这是我的错误:

*** Assertion failure in -[PSUICollectionView _endItemAnimations], /SourceCache/UIKit_Sim/UIKit-2372/UICollectionView.m:2801

我这样称呼它:

[self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:1 inSection:1]]];

为什么会发生这种情况,有什么想法?

3 个答案:

答案 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时:我的集合视图正在重新加载其数据。修复此错误后,断言失败的问题已经消失。