删除最后一项时 UICollectionView 崩溃

Posted

技术标签:

【中文标题】删除最后一项时 UICollectionView 崩溃【英文标题】:UICollectionView crash when deleting last item 【发布时间】:2014-06-04 15:32:41 【问题描述】:

每当我删除一个项目时,我都会尝试更新 uicollection 视图。所有单元格都可以正常删除,但是如果我删除该集合视图中的最后一个单元格,应用程序崩溃并且我已经放了

[self.collectionview performBatchUpdates:^
        [postarray removeObjectAtIndex:indexPath.item];
        [self.collectionview deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexPath.row inSection:1]]];
     completion:^(BOOL finished) ];

我得到的错误是 'NSRangeException', reason: '* -[__NSArrayI objectAtIndex:]: index 17 beyond bounds [0 .. 16]' 。即使数组和集合视图项从相同的索引开始,我也收到了这条消息

【问题讨论】:

错误信息是什么? 【参考方案1】:

我使用相同的代码行收到了相同的错误消息,结果发现它与 UICollectionView 数据源无关,而是与应用程序另一部分中的并行数组有关,该数组在之后更新了其内容,但没有删除后的活动索引。

要查找此类错误,请启用异常断点:NSRangeException when deleting last UICollectionViewCell

【讨论】:

【参考方案2】:

只需反转你的两条线。您需要先删除单元格才能删除您的对象。

[self.collectionview performBatchUpdates:^
        [self.collectionview deleteItemsAtIndexPaths:@[[NSIndexPath indexPathForRow:indexPath.row inSection:1]]];
        [postarray removeObjectAtIndex:indexPath.item];
     completion:^(BOOL finished) ];

【讨论】:

谢谢。但是在反转两行后仍然会发生崩溃 是同样的错误信息吗?替换:[postarray removeObjectAtIndex:indexPath.item]; By : [postarray removeObjectAtIndex:indexPath.row];

以上是关于删除最后一项时 UICollectionView 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

从 UICollectionView 中删除最后一项时出现断言失败

UICollectionView 中的 UITableView 行为不端

UICollectionView 水平滚动,删除最后一项,动画不起作用

带有插图的 UICollectionView 不会一直向下滚动

达到 ui:repeat 的最后一项时如何有条件地设置样式类?

当我想删除列表中的一项时,一切都会被删除 Expo, React Native