删除最后一项时 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 不会一直向下滚动