2015-08-14 3 views
1

Я новичок на этом, как название, хотело бы реализовать собственные перетащить & падения UITableView, в то время как каждый UITableViewCell содержания (cell.content?) Будет содержит пользовательские UIView , Например. Row1-cell-CustomUIView1, Row2-cell-CustomUIView2. Какой пользовательский номер UIView добавлен к тому, какая строка основана на выборе пользователя в этой строке и нажатии кнопки. Теперь представьте, что у вас есть 4 пользовательских UIViews, то есть добавляется в 4 строки/ячейки в UITableView и как я могу реализовать перетаскивание этих CustomUIView? Обратите внимание: каждый пользовательский UIView может не совпадать с типичной ячейкой таблицы. то есть пользовательский формат/дизайн UIView1 отличается от пользовательского UIView2. Реализовать в быстрой, Любая идея?Перетаскивание UITableViewCell, который содержит пользовательские UIView в cell.content

ответ

1

Это может помочь у ...

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

добавить UIPanGestureRecognizer в mainImgView обрабатывать увлекая;

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 
} 
} 
+0

Спасибо за быстрый ответ Mee. Получил пару вопросов, будет ли это также применяться, если каждый пользовательский UIViews с разной высотой? (ширина должна быть одинаковой для каждого пользовательского UIView в каждой строке). Во-вторых, если каждый из этих пользовательских UIView доступен для редактирования (например, пользовательский UIView в ячейке, возможно, содержит текстовое поле и может снимать изображение/загружать в него изображение), он все равно может перемещаться, я полагаю, будет ли порядок строк/списков таблиц поддерживать? Как данные в каждом пользовательском UIView должны храниться в таком случае? – eyc

+0

Если я не очень четко излагаю, все это точно так же, как приложение «Напоминание» в iphone, (1), которое может добавлять новые/добавлять новый на нижний, один за другим по запросу, (2) возможность удаления по запросу и (3) возможность перетаскивания (4) сохранить/сохранить измененный порядок для последующего использования должным образом. – eyc

Смежные вопросы