【发布时间】:2017-08-17 13:46:58
【问题描述】:
我正在尝试重新排序我的 CollectionView 单元格。但似乎无法通过 UILongPressGestureRecognizer。状态从开始 -> 更改 -> 结束。但它不会用到 moveItemAtIndexPath 函数。 这是我的代码:
func collectionView(collectionView: UICollectionView, moveItemAtIndexPath sourceIndexPath: NSIndexPath,toIndexPath destinationIndexPath: NSIndexPath) {
var temp1 = [self.viewThatIsShown.selectionForView?.pageArray.count]
let temp = temp1.removeAtIndex(sourceIndexPath.item)
temp1.insert(temp, atIndex: destinationIndexPath.item)
}
func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
let layout = self.viewThatIsShown.selectionForView!.rawJSON["pages"].arrayValue[section]["layout"].stringValue
if layout == "video" || layout == "social-media" {
return 1
} else if layout == "pre-list" {
let dataJSON = self.viewThatIsShown.selectionForView!.rawJSON["pages"].arrayValue[section]["data"]
return dataJSON["listitems"].arrayValue.count
}
let dataSet = self.viewThatIsShown.dataForView!.dataArray[section]
return min(dataSet.embeddedItemsArray.count, 2)
}
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()
}
也没有显示错误。我想我在计算部分中的项目数量时犯了一些错误。但是想不通。 P.S 我的 UICollectionview 中有六个部分,我想将其用于拖放部分。
【问题讨论】:
标签: ios swift uicollectionview