Ios 拖放在cell.content中包含自定义UIView的UITableViewCell

Ios 拖放在cell.content中包含自定义UIView的UITableViewCell,ios,swift,uitableview,uiview,Ios,Swift,Uitableview,Uiview,我是这方面的新手,如标题所示,希望在UITableView中实现自定义拖放,而每个UITableViewCell内容(cell.content?)将包含一个自定义UIView。例如,行1-cell-CustomUIView1、行2-cell-CustomUIView2。哪个自定义ui视图添加到哪个行取决于用户对该行的选择和按钮单击。现在假设您有4个自定义的ui视图,即添加到ui表视图中的4行/单元格中,我如何实现这些customui视图的拖放?注意,每个自定义UIView可能与典型的表格单元不同

我是这方面的新手,如标题所示,希望在
UITableView
中实现自定义拖放,而每个
UITableViewCell
内容(cell.content?)将包含一个自定义
UIView
。例如,行1-cell-CustomUIView1、行2-cell-CustomUIView2。哪个自定义
ui视图
添加到哪个行取决于用户对该行的选择和按钮单击。现在假设您有4个自定义的
ui视图
,即添加到
ui表视图
中的4行/单元格中,我如何实现这些
customui视图
的拖放?注意,每个自定义UIView可能与典型的表格单元不同。i、 e.自定义UIView1布局/设计不同于自定义
UIView2
。在swift中实现任何想法?

这可能有助于您将UIPAngestureRecognitor添加到主IMG视图中以处理拖动:

var draggableImage : UIImageView!
var mainImgView : UIImageView!
var trashImgView : UIImageView!
var dragStartPositionRelativeToCenter : CGPoint?
var panGesture : UIPanGestureRecognizer!

panGesture = UIPanGestureRecognizer(target: self, action: "handleDrag:")
mainImgView.addGestureRecognizer(panGesture)

func handleDrag(nizer: UIPanGestureRecognizer!) {
   if nizer.state == UIGestureRecognizerState.Began {
      self.draggableImage = UIImageView(image: mainImgView.image)
      self.draggableImage.frame = CGRectMake(0, 0, 100, 100)
      self.draggableImage.center = mainImgView.center
      self.draggableImage.contentMode = .ScaleAspectFit
      self.draggableImage.userInteractionEnabled = true
      self.draggableImage.alpha = 0.5

      self.view.addSubview(self.draggableImage)
      self.view.bringSubviewToFront(sself.draggableImage)

      let locationInView = nizer.locationInView(self.draggableImage.superview)
      dragStartPositionRelativeToCenter = CGPoint(x: locationInView.x - self.draggableImage.center.x, y: locationInView.y - self.draggableImage.center.y)

      self.draggableImage.layer.shadowOffset = CGSize(width: 0, height: 20)
      self.draggableImage.layer.shadowOpacity = 0.3
      self.draggableImage.layer.shadowRadius = 6

      return
  }

  if nizer.state == UIGestureRecognizerState.Changed {
     let locationInView = nizer.locationInView(self.draggableImage.superview)
     UIView.animateWithDuration(0.1) {
        self.draggableImage.center = CGPoint(x: locationInView.x - self.dragStartPositionRelativeToCenter!.x,
            y: locationInView.y - self.dragStartPositionRelativeToCenter!.y)
    }

      var checkAddToBag : Bool = CGRectContainsRect(self.draggableImage.frame, self.trashImgView.frame)

      if (checkAddToBag == true){
        self.trashImgView.layer.borderColor = UIColor.redColor().CGColor
        self.trashImgView.layer.borderWidth = 1.0
    } else {
        self.trashImgView.layer.borderColor = UIColor.clearColor().CGColor
        self.trashImgView.layer.borderWidth = 0.0
      }

      return
   }

   if nizer.state == UIGestureRecognizerState.Ended {
      var checkAddToBag : Bool = CGRectContainsRect(self.draggableImage.frame, self.trashImgView.frame)

      self.trashImgView.layer.borderColor = UIColor.clearColor().CGColor
      self.trashImgView.layer.borderWidth = 0.0

      dragStartPositionRelativeToCenter = nil

      self.draggableImage.removeFromSuperview()
      self.draggableImage = nil

      return
   }
}

谢谢你的快速回复。有几个问题,如果每个自定义UIView的高度不同,这是否也适用?(每行中每个自定义UIView的宽度应相同)。其次,如果每个自定义UIView都是可编辑的(例如,单元格中的自定义UIView,可能包含文本框,并且可以拍照/上传图像),它仍然可以四处移动,我想,表行/列表顺序是否会保持?在这种情况下,每个自定义UIView中的数据应该如何保存?如果我不是很清楚的话,整个要点就像iphone中的“提醒”应用程序,(1)可以根据请求一个接一个地添加新的/附加到底部,(2)可以根据请求删除,(3)可以拖放(4)维护/保留重新安排的订单,以便以后正确使用。