2013-07-02 78 views
5

我需要從CollectionView中拖出一個單元格並將其放到 CollectionView二。 拖動&刪除一個的CollectionView裏面是沒有問題的,但我怎麼 可以得到小區出來的CollectionView一到兩個的CollectionView?兩個UICollectionViews之間的拖放

任何想法?任何已經解決了這個問題的項目或框架? 感謝您的幫助!

+1

您必須在兩個集合視圖的超級視圖中創建一個「虛擬」單元格。即唯一的共同點。然後攔截移動的位置並將其刪除/根據需要將其添加到集合視圖中。 – Fogmeister

回答

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