要移動UICollectionView中的項目我使用UILongPressGestureRecognizer。在平移期間UICollectionView單元格在各節之間移動不正確
我採取了以下手勢處理機:
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()
}
}
加上集合視圖委託方法moveItemAtIndexPath
的正確的覆蓋,移動部分中的細胞可以完美運行。此外,將細胞移動到其他可見部分也可按預期工作。
'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of items in section 0. The number of items contained in an existing section after the update (1) must be equal to the number of items contained in that section before the update (0), plus or minus the number of items inserted or deleted from that section (0 inserted, 0 deleted) and plus or minus the number of items moved into or out of that section (0 moved in, 0 moved out).'
問題似乎涉及到的位置變化被跟蹤:然而,在移動細胞到成爲平移/向下滾動,導致下面的錯誤(我用了一個域數據庫)可見部分時發生的問題手勢識別器updateInteractiveMovementTargetPosition
因爲在這種方法中發生錯誤。
我想updateInteractiveMovementTargetPosition
直接調用集合視圖方法moveItemAtIndexPath
(不通過委託),這會導致錯誤,因爲中間單元格位置更改沒有在Realm數據庫中更新。還是我不正確?
有人會知道爲什麼在部分之間移動對可見部分起作用,但在平移時不起作用?如何正確處理滾動/平移?
這是我基本上是一個集合視圖實現,並在的情況下沒有問題的作品單節(在表格視圖中也適用於具有適當的'moveRowAtIndexPath'的多節)。我遇到的問題僅在將移動單元移動到多節集合視圖中某個節的最後一個單元之後(單節沒有錯誤發生)時發生。我發佈了一些代碼,可以在[github](https://github.com/Taco55/CollectionViewCellMoving)上重現此錯誤。這可能是Swift中的 錯誤還是我錯誤地更新數據庫?任何幫助,將不勝感激 – Taco