使用tableView.cellForRow(at:indexPath)存储为var的单元格正在更改(iOS)

时间:2016-11-02 17:16:11

标签: ios

我使用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, 
     }
}    

0 个答案:

没有答案