6

Here is my error:

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

I'm calling it like this:

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

Why is this happening, any ideas?

4

3 回答 3

7

您是否也从模型中删除了该项目?因此,例如,如果行数、节数和它们呈现的内容取自数组字典,其键代表节,每个数组代表行,那么如果您删除一行,则deleteItemsAtIndexPaths您有责任更新字典因此。UICollectionView不会为你做的。

于 2012-12-04T17:40:03.763 回答
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];
于 2012-12-05T09:47:35.287 回答
1

当您调用 deleteItemsAtIndexPaths: 时,检查您的集合视图是否正忙于其他事情。我在使用 insertItemsAtIndexPaths: 方法时遇到了同样的问题,结果证明这是由我的代码中的错误引起的——我在调用 [my collectionView reloadData] 后立即调用了 [myCollectionView insertItemsAtIndexPaths:] 。因此,在调用 insertItemsAtIndexPaths 的那一刻:我的集合视图正在重新加载其数据。在我修复了这个错误之后,断言失败的问题就消失了。

于 2013-02-08T23:13:28.840 回答