質問: コレクションビューのセルをドラッグで移動させたいです。 テーブルビューの場合は、編集モードで行の移動が出来ると思いますが、コレクションビューにはそういった機能はあるのでしょうか? 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) ``` といったメソッドがあるようなのですが、これらメソッドを使用してセルの移動が出来るのでしょうか? お知恵をお貸しいただけると幸いです。
回答: こちらのサイトが参考になるのではないでしょうか。 UICollectionViews Now Have Easy Reordering 英語のサイトですが、GitHubからサンプルプロジェクトも落とせますし、実際に動くコードを見ながら読めばざっくりと方法はわかると思います。 (1) `UICollectionViewController`を使う場合 基本的に`collectionView(_:moveItemAtIndexPath:toIndexPath:)`を実装するだけ。 (2) 自前のViewControllerを使う場合 上記の他、GestureRecoginizerを使って、(移動のための)dragの開始/状態変化/終了処理を書いてやる必要がある。 (3) 自前のViewControllerでさらにカスタムlayoutを使う場合 上記の他、自前のLayoutクラスでいくつかのメソッドをoverrideしてやる。 注意点としては、iOS9以降の機能ですので、開発中のアプリをiOS9以降のみの対応にして良いかどうかは要チェックです。問題ないのであれば、サンプルコードを試して見られると良いかと思います。