当我将其添加到UICollectionViewController
子类中时,重新排序在iOS9中有效
override func collectionView(collectionView: UICollectionView,
moveItemAtIndexPath sourceIndexPath: NSIndexPath,
toIndexPath destinationIndexPath: NSIndexPath)
当此
UICollectionViewController
子类嵌入到容器 View 中时,它将不起作用。我已经对问题here进行了演示
关于为什么或如何解决它的任何想法?
最佳答案
这里的问题是,您将UICollectionView放在驻留在UIViewController内的UIContainerView内。这仅需要几个步骤即可使UICollectionView正常工作。
将以下内容添加到CollectionViewController中的ViewDidLoad中:
self.collectionView!.addGestureRecognizer(UILongPressGestureRecognizer(target: self, action: "handleLongGesture:"))
然后将以下函数添加到您的CollectionViewController中:
func handleLongGesture(gesture: UILongPressGestureRecognizer)
{
switch(gesture.state)
{
case UIGestureRecognizerState.Began:
guard let selectedIndexPath = self.collectionView!.indexPathForItemAtPoint(gesture.locationInView(self.collectionView)) else
{
break
}
collectionView!.beginInteractiveMovementForItemAtIndexPath(selectedIndexPath)
case UIGestureRecognizerState.Changed:
collectionView!.updateInteractiveMovementTargetPosition(gesture.locationInView(gesture.view!))
case UIGestureRecognizerState.Ended:
collectionView!.endInteractiveMovement()
default:
collectionView!.cancelInteractiveMovement()
}
}
最后,只需确保包括以下内容,以确保正确处理dataSource:
override func collectionView(collectionView: UICollectionView, moveItemAtIndexPath sourceIndexPath: NSIndexPath,toIndexPath destinationIndexPath: NSIndexPath) {
// Swap the values of the source and destination
}
查看此link以获得更多有关此的信息。
希望这对您有所帮助。