UICollectionView 断言失败 -[UICollectionView _updateWithItems:tentativelyForReordering:]
Posted
技术标签:
【中文标题】UICollectionView 断言失败 -[UICollectionView _updateWithItems:tentativelyForReordering:]【英文标题】:UICollectionView Assertion failure in -[UICollectionView _updateWithItems:tentativelyForReordering:] 【发布时间】:2015-10-04 21:02:22 【问题描述】:ios8.4。在设备而非模拟器上。
我收到了这个 carsh 错误;
Assertion failure in -[UICollectionView _updateWithItems:tentativelyForReordering:], /SourceCache/UIKit/UIKit-3347.44.2/UICollectionView.m:4563
当我打电话时
NSArray* array_indexPaths = [NSArray arrayWithObject:[NSIndexPath indexPathForRow:1 inSection:0]];
[self.collectionView reloadItemsAtIndexPaths:indexPaths];
已尝试将上述内容放在里面
[self.collectionView performBatchUpdates:^
没有运气。
是否有其他人经历过这种情况或知道为什么会发生这种情况?
【问题讨论】:
您是否以某种方式解决了这个问题? 我没有。我最终从根本上彻底改变了整个事情,并且永远不需要打这个电话。不过,我从来没有搞清楚为什么上面的电话会发生这种情况。 【参考方案1】:我找到了这个 rdar:http://www.openradar.me/26280932,上面写着:
在 viewDidLoad 之后但在 viewDidAppear 之前在 UICollectionView 上调用 insertItemsAtIndexPaths: 将导致 -[UICollectionView _endItemAnimationsWithInvalidationContext:tentativelyForReordering:] 中的断言失败。在同一场景中调用 reloadData 不会生成断言。
因此您可以在viewDidAppear
之前检查您是否正在拨打电话,并在视图出现之前进行调整/等待。
【讨论】:
以上是关于UICollectionView 断言失败 -[UICollectionView _updateWithItems:tentativelyForReordering:]的主要内容,如果未能解决你的问题,请参考以下文章
UICollectionView + iOS 7 / Xcode 5 = 断言失败
带有 endItemAnimations 的 UICollectionView 中的断言失败
createPreparedCellForItemAtIndexPath 中的 UICollectionView 断言失败