我使用longPress手势识别器通过创建单元格的快照并检测快照的Y位置来重新排列单元格,并在长按结束时相应地重新排列表格。一切都很好。
然而,一个问题是,当我向下滚动屏幕时,我用tableView.cellForRow(at:
方法存储的单元格似乎发生了变化。我知道这是因为细胞正在出现b / c它是一个可重复使用的细胞,但我如何创建一个不变的细胞参考?
fileprivate var cellBeingMoved: MediaCell? //var that is changing
func longPressGestureRecognized(_ gestureRecognizer: UIGestureRecognizer) {
switch state {
case UIGestureRecognizerState.began:
if indexPath != nil {
if let cell = tableView.cellForRow(at: indexPath!) as? MediaCell {
//This variable is changing when the cell goes off the screen
self.cellBeingMoved = cell
self.createScreenshotOfCell(cell)
}
}
case UIGestureRecognizerState.changed:
//detect Y position
default:
//rearrange table,
}
}