从TableView拖放到Swift中的另一个视图

乔布斯·约翰(Jobins John)

我正在尝试将一个项目从一个UITableView复制到另一个View,并且在过去的两天里我一直在努力工作,但仍然无法弄清楚如何完成此工作。

这是我的UI架构的小草图

在此处输入图片说明

这是我在做什么

  1. 长按表格视图中的一行

  2. 长按可在单元格中创建图像快照

  3. 将快照拖到表视图外的“视图”(绿色区域)中

  4. 释放快照后,检查快照是否已在“绿色视图”区域中删除。

我能够做到快照创建时为止,并且当我尝试拖动快照时,我无法获得将快照拖动到的位置。释放拖动后,我需要检查拖动的最后一点是否在DROP AREA(绿色)内。

任何人都可以通过一些示例代码来提供一些有关如何解决问题的见解...

提前致谢...

丹尼斯·魏德曼

目前,我没有时间测试代码,但是应该足够有意义....您可以执行以下操作:

class ViewController: UIViewController, UITableViewDataSource {

    private var dragView: UIView?
    @IBOutlet weak var dropZone: UIView!

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 3
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)

        let lpGestureRecognizer: UILongPressGestureRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(didLongPressCell))
        cell.contentView.addGestureRecognizer(lpGestureRecognizer)

        return cell
    }

    func didLongPressCell (recognizer: UILongPressGestureRecognizer) {
        switch recognizer.state {
        case .Began:
            if let cellView: UIView = recognizer.view {
                cellView.frame.origin = CGPointZero
                dragView = cellView
                view.addSubview(dragView!)
            }
        case .Changed:
            dragView?.center = recognizer.locationInView(view)
        case .Ended:
            if (dragView == nil) {return}

            if (CGRectIntersectsRect(dragView!.frame, dropZone.frame)) {
                if let cellView: UIView = (dragView?.subviews[0])! as UIView {
                    cellView.frame.origin = CGPointZero
                    dropZone.addSubview(cellView)
                }

                dragView?.removeFromSuperview()
                dragView = nil

                //Delete row from UITableView if needed...
            } else {
                //DragView was not dropped in dropszone... Rewind animation...
            }
        default:
            print("Any other action?")
        }
    }

}

评论更新:

当然,一种可能是标记字段...像这样:

private let imageViewTag: Int = 997
private let textLabelTag: Int = 998
private let detailTtextLabelTag: Int = 999

//...

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    //...
    cell.imageView?.tag = imageViewTag
    cell.textLabel?.tag = textLabelTag
    cell.detailTextLabel?.tag = detailTtextLabelTag
    //...

}

func didLongPressCell (recognizer: UILongPressGestureRecognizer) {
    //...
    case .Ended:
    let cellImageView: UIImageView? = recognizer.view?.viewWithTag(imageViewTag) as? UIImageView
    let cellTextLabel: UITextField? = recognizer.view?.viewWithTag(textLabelTag) as? UITextField
    let cellDetailTextLabel: UITextField? = recognizer.view?.viewWithTag(detailTtextLabelTag) as? UITextField
    //...
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从TableView拖放到Swift中的另一个视图

来自分类Dev

javascript拖放-防止元素拖放到另一个droppable元素中

来自分类Dev

javascript拖放-防止元素拖放到另一个droppable元素中

来自分类Dev

将一个项目从一个recyclerview(列表视图)拖放到另一个recyclerview(listview)中

来自分类Dev

将一个项目从一个recyclerview(列表视图)拖放到另一个recyclerview(listview)中

来自分类Dev

将存储文件从一个列表视图拖放到另一个列表视图

来自分类Dev

从dynamic.stage拖放到另一个

来自分类Dev

Android将ImageView拖放到另一个ImageView(或布局)中

来自分类Dev

将.PNG图像拖放到JavaScript中的另一个图像之上

来自分类Dev

如何将div拖放到另一个div中,并使整个元素跟随?

来自分类Dev

拖动元素时将内部html拖放到另一个元素中

来自分类Dev

将 UIView 拖放到另一个(UIPanGesture 识别器)中

来自分类Dev

将一个画布内的对象拖放到html5中的另一个画布上

来自分类Dev

Xcode将ViewController从一个项目拖放到另一个项目

来自分类Dev

将图像从一个div拖放到另一个div

来自分类Dev

将ListView Item从一个listView拖放到另一个

来自分类Dev

将一个节点拖放到另一个节点

来自分类Dev

Xcode将ViewController从一个项目拖放到另一个项目

来自分类Dev

禁用从一个级别拖放到另一个级别

来自分类Dev

将ListView Item从一个listView拖放到另一个

来自分类Dev

子视图在将其拖动到滚动视图(父视图)之外时隐藏,并在拖放到另一个视图后出现。

来自分类Dev

在将视图拖放到另一个视图后,我想开始新的活动。如何在开关盒中进行操作?

来自分类Dev

在将视图拖放到另一个视图后,我想开始新的活动。如何在开关盒中进行操作?

来自分类Dev

在Swift中调用另一个视图

来自分类Dev

在Swift中调用另一个视图

来自分类Dev

将单元格从datagridview拖放到另一个

来自分类Dev

将下拉的Listview项目拖放到另一个项目中

来自分类Dev

如何将ImageView拖放到另一个ImageView上

来自分类Dev

从Silverlight OOB拖放到另一个应用程序

Related 相关文章

  1. 1

    从TableView拖放到Swift中的另一个视图

  2. 2

    javascript拖放-防止元素拖放到另一个droppable元素中

  3. 3

    javascript拖放-防止元素拖放到另一个droppable元素中

  4. 4

    将一个项目从一个recyclerview(列表视图)拖放到另一个recyclerview(listview)中

  5. 5

    将一个项目从一个recyclerview(列表视图)拖放到另一个recyclerview(listview)中

  6. 6

    将存储文件从一个列表视图拖放到另一个列表视图

  7. 7

    从dynamic.stage拖放到另一个

  8. 8

    Android将ImageView拖放到另一个ImageView(或布局)中

  9. 9

    将.PNG图像拖放到JavaScript中的另一个图像之上

  10. 10

    如何将div拖放到另一个div中,并使整个元素跟随?

  11. 11

    拖动元素时将内部html拖放到另一个元素中

  12. 12

    将 UIView 拖放到另一个(UIPanGesture 识别器)中

  13. 13

    将一个画布内的对象拖放到html5中的另一个画布上

  14. 14

    Xcode将ViewController从一个项目拖放到另一个项目

  15. 15

    将图像从一个div拖放到另一个div

  16. 16

    将ListView Item从一个listView拖放到另一个

  17. 17

    将一个节点拖放到另一个节点

  18. 18

    Xcode将ViewController从一个项目拖放到另一个项目

  19. 19

    禁用从一个级别拖放到另一个级别

  20. 20

    将ListView Item从一个listView拖放到另一个

  21. 21

    子视图在将其拖动到滚动视图(父视图)之外时隐藏,并在拖放到另一个视图后出现。

  22. 22

    在将视图拖放到另一个视图后,我想开始新的活动。如何在开关盒中进行操作?

  23. 23

    在将视图拖放到另一个视图后,我想开始新的活动。如何在开关盒中进行操作?

  24. 24

    在Swift中调用另一个视图

  25. 25

    在Swift中调用另一个视图

  26. 26

    将单元格从datagridview拖放到另一个

  27. 27

    将下拉的Listview项目拖放到另一个项目中

  28. 28

    如何将ImageView拖放到另一个ImageView上

  29. 29

    从Silverlight OOB拖放到另一个应用程序

热门标签

归档