2013-07-02 20 views
5

セルをCollectionViewからドラッグする必要があります。 CollectionView 2つにドラッグします。 ドラッグ& CollectionView内のドロップは問題ありませんが、どのようにして CollectionView OneのCollectionView OneからCellを取得できますか?2つのUICollectionView間のドラッグ&ドロップ

アイデア?すでにこの問題を解決しているプロジェクトまたはフレームワーク 助けてくれてありがとう!

+1

両方のコレクションビューのスーパービューに「ダミー」セルを作成する必要があります。すなわち唯一の共通の地面である。次に、これが移動した場所を傍受し、必要に応じてコレクションビューに追加/削除します。 – Fogmeister

答えて

3

https://github.com/Ice3SteveFortune/i3-dragndropこれを確認してください。私はそれを達成するために取り組んでいるヘルパーです。また、私はBetweenKitと呼ばれるこのコードベースの第二版を、最近リリースしたtableviews

UPDATE

をサポートしています。今は本格的なドラッグ・アンド・ドロップ・フレームワークです。

希望すると便利です。

1

最初のコレクションビューからセルを選択すると、このコレクションビューからセルを削除し、そのセルのコピーとして新しいビューを作成し、すべてのビューの上にスーパービューのサブビューとして配置します。パンのジェスチャーを使用してそのビューを移動可能にします。この中間のセルを「ドロップ」するとすぐにその位置を検出し、現在のコレクションビューに追加します。

2

[OK]を見て持つことができ、ここでは次の例のために、これまで最も簡単な流れです:

enter image description here

  1. UICollectionViewのすべてのためのUIGestureRecognizerを追加します。
  2. 接続する1つの方法ですべてのジェスチャ認識:UIViewController

    @IBAction func longPressGestureChanged(recognizer: UILongPressGestureRecognizer) { ... } 
    
  3. UICollectionViewのそれぞれについて@IBOutletを追加:

    @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 
        } 
    } 
    
  4. @IBOutlet var collectionViewGreen: UICollectionView! 
    @IBOutlet var collectionViewYellow: UICollectionView! 
    
  5. の変化を検出するジェスチャ認識方法を実装

関連する問題