コレクションビューのセルをドラッグで移動させたいです。  
テーブルビューの場合は、編集モードで行の移動が出来ると思いますが、コレクションビューにはそういった機能はあるのでしょうか？

UICollectionViewDataSourceプロトコルに

```

    ・public func collectionView(collectionView: UICollectionView,canMoveItemAtIndexPath indexPath: NSIndexPath) -> Bool
    ・public func collectionView(collectionView: UICollectionView, moveItemAtIndexPath sourceIndexPath: NSIndexPath, toIndexPath destinationIndexPath: NSIndexPath)
    
```

また、UICollectionViewに

```

    ・public func moveItemAtIndexPath(indexPath: NSIndexPath, toIndexPath newIndexPath: NSIndexPath)
    
```

といったメソッドがあるようなのですが、これらメソッドを使用してセルの移動が出来るのでしょうか？

お知恵をお貸しいただけると幸いです。
CC BY-SA 3.0
2016-06-02T08:15:59.140
25384
2016-11-03T10:02:10.243
12878
question
swift xcode uicollectionview
UICollectionViewのセルの移動
こちらのサイトが参考になるのではないでしょうか。  
[UICollectionViews Now Have Easy
Reordering](http://nshint.io/blog/2015/07/16/uicollectionviews-now-have-easy-
reordering/)

英語のサイトですが、GitHubからサンプルプロジェクトも落とせますし、実際に動くコードを見ながら読めばざっくりと方法はわかると思います。

(1) `UICollectionViewController`を使う場合  
基本的に`collectionView(_:moveItemAtIndexPath:toIndexPath:)`を実装するだけ。

(2) 自前のViewControllerを使う場合  
上記の他、GestureRecoginizerを使って、(移動のための)dragの開始/状態変化/終了処理を書いてやる必要がある。

(3) 自前のViewControllerでさらにカスタムlayoutを使う場合  
上記の他、自前のLayoutクラスでいくつかのメソッドをoverrideしてやる。

注意点としては、iOS9以降の機能ですので、開発中のアプリをiOS9以降のみの対応にして良いかどうかは要チェックです。問題ないのであれば、サンプルコードを試して見られると良いかと思います。
CC BY-SA 3.0
2016-06-02T13:15:54.547
25390
2016-06-02T13:15:54.547
13972
25384
answer