在我的应用程序的UICollectionView中使用重新排序功能时,我确实遇到了一个奇怪的问题。我们有一个自定义布局,用于显示装饰视图。集合视图使用基于流的布局。当我将第一个单元格从其位置移动到最后一个单元格位置以重新排序单元格时,应用程序会在调用集合视图委托collectionView(moveItemAt: to)
方法之前崩溃。
附上此问题的堆栈跟踪。您可以看到NSIndexPath和IndexPath之间的桥接发生了崩溃。我不知道为什么它会在UIKit里面发生。搜索此问题后发现它似乎是UVMIt中的错误,它是在Swift 3.0中引入的。我测试了我在swift 3.0迁移之前构建的旧版本,它没有任何崩溃。
有人能告诉我如何解决这个问题?
相关的错误链接 UICollectionView broken after Swift 3 migration? https://bugs.swift.org/browse/SR-2103 https://bugs.swift.org/browse/SR-2417
func handleLongGesture(_ gesture: UILongPressGestureRecognizer) {
switch(gesture.state) {
case UIGestureRecognizerState.began:
if let movingPageIndexPath = collectionView.indexPathForItem(at: gesture.location(in: collectionView)) {
collectionView.beginInteractiveMovementForItem(at: movingPageIndexPath)
}
case UIGestureRecognizerState.changed:
collectionView.updateInteractiveMovementTargetPosition(gesture.location(in: collectionView))
case UIGestureRecognizerState.ended:
collectionView.endInteractiveMovement()
default:
collectionView.cancelInteractiveMovement()
}
}