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)维护/保留重新安排的订单,以便以后正确使用。