删除最后一个UICollectionViewCell

时间:2016-03-26 10:33:32

标签: ios objective-c uicollectionview uicollectionviewcell

我有一个带有1节的UICollectionView。用户可以从集合中删除单元格,并使用此代码进行删除:

[self.collectionView performBatchUpdates:^{
   [self.collectionView deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:i inSection:0]]];
   [self.media removeObjectAtIndex:i];
} completion:nil];

除了集合中的最后一个单元格之外,每个单元格都可以正常工作,每次出现错误都会导致应用程序崩溃:Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayM objectAtIndex:]: index 3 beyond bounds [0 .. 2]

NSZombies没有向我显示堆栈跟踪,所以我在我的代码中的每一行都放了一个断点来访问一个数组,但没有一个被命中,我发现在deleteItemsAtIndexPaths之后抛出了这个错误,{{1 }和numberOfSectionsInCollectionView,但在sizeForItemAtIndexPathnumberOfItemsInSection

之前

可能导致此次崩溃的原因是什么?我该如何调试呢?

有一些类似的SO帖子,但是2年前的这个帖子没有答案UICollectionView crash when deleting last item,如果你想要删除整个部分,这个只能解决问题:Removing the last Cell in UICollectionView makes a Crash

UPDATE,这是在崩溃之前运行的数据源委托方法:

cellForItemAtIndexPath

1 个答案:

答案 0 :(得分:3)

只需输入Exceptions Breakpoint,您就可以找到崩溃的确切位置。

enter image description here