拖动;在两个UICollectionView之间删除

时间:2013-07-02 14:44:50

标签: ios swift uicollectionview

我需要从CollectionView One拖动一个单元格并将其放入 CollectionView两个。 拖曳与在一个CollectionView中删除是没有问题,但如何 我可以将Cell从CollectionView One转移到CollectionView Two吗?

有什么想法吗?任何已经解决了这个问题的项目或框架? 谢谢你的帮助!

3 个答案:

答案 0 :(得分:4)

https://github.com/Ice3SteveFortune/i3-dragndrop检查一下 - 这是我正在努力实现的一个帮手。它还支持tableviews

<强>更新

我最近发布了此代码库的第二个版本,名为BetweenKit。它现在是一个完全成熟的拖放框架。

希望它证明有用!

答案 1 :(得分:2)

好的,这是以下示例中最简单的流程:

enter image description here

  1. UIGestureRecognizer中的每一个添加UICollectionView
  2. 使用一种方法连接每个手势识别器:

    @IBAction func longPressGestureChanged(recognizer: UILongPressGestureRecognizer) { ... }
    
  3. UIViewController内为每个@IBOutlet添加UICollectionView

    @IBOutlet var collectionViewGreen: UICollectionView!
    @IBOutlet var collectionViewYellow: UICollectionView!
    
  4. 实施手势识别器方法以检测更改:

    @IBAction func longPressGestureChanged(recognizer: UILongPressGestureRecognizer) {
    
        let globalLocation = recognizer.locationInView(view)
    
        if CGRectContainsPoint(collectionViewGreen.frame, globalLocation) {
    
            //you cover green collection view
            let point = view.convertPoint(globalLocation, toView: collectionViewGreen)
            if let indexPath = collectionViewGreen.indexPathForItemAtPoint(point) {
               //you cover cell in green collection view
            } else {
                //you do not cover any of cells in green collection view
            }
    
        } else if CGRectContainsPoint(collectionViewYellow.frame, globalLocation) {
    
            //you cover yellow collection view
            let point = view.convertPoint(globalLocation, toView: collectionViewYellow)
            if let indexPath = collectionViewYellow.indexPathForItemAtPoint(point) {
                //you cover cell in yellow collection view
            } else {
                //you do not cover any of cells in yellow collection view
            }
    
        } else {
            //you do not cover any of collection views
        }
    }
    

答案 2 :(得分:1)

从第一个集合视图中选择单元格时,将其从此集合视图中删除,创建一个新视图作为该单元格的副本,将其作为所有视图顶部的超级视图的子视图。使用平移手势使该视图可移动。只要您“删除”此中间单元格,请检测其位置并将其添加到当前集合视图中。