いつもお世話になります。
以下のことを実現したいので質問します。
添付した画像のようにcollectionViewでユーザーデフォルトの特定フォルダ内を表示してします。
データはファイルアイコン、フォルダはフォルダアイコンで表示されます。
ファイルをドラッグ&ドロップしてフォルダに格納したいのですが、
現状、ファイル・フォルダをドラッグ&ドロップして並び替えができるところまでしかできません。
ファイルアイコンがフォルダアイコンに重なったときだけに以下の処理をしたい
-ファイル操作-
・ファイルをフォルダ内にコピーする
・元のファイルを削除する
-画面表示-
・処理が成功したらファイルアイコンを削除する ぷるぷるは必要ないです。
collectionViewの並び替え処理をしているメソッドのどれかをoverrideすれば実現できるでしょうか?
現状は↓のような方法で、
collectionViewのドラッグ&ドロップはロングプレスレコグナイザを利用して、並び替えの保存は配列に記録しています。
```swift
//CollectionViewの並び替え処理
@objc func handleLongGesture(gesture: UILongPressGestureRecognizer) {
switch(gesture.state) {
case UIGestureRecognizerState.began:
guard let selectedIndexPath = fileNavigatorCollectionView.indexPathForItem(at: gesture.location(in: fileNavigatorCollectionView)) else { break }
fileNavigatorCollectionView.beginInteractiveMovementForItem(at: selectedIndexPath)
case UIGestureRecognizerState.changed: fileNavigatorCollectionView.updateInteractiveMovementTargetPosition(gesture.location(in: gesture.view!)) print("gesture.location(in: gesture.view!):",gesture.location(in: gesture.view!)) case UIGestureRecognizerState.ended: fileNavigatorCollectionView.endInteractiveMovement() default: fileNavigatorCollectionView.cancelInteractiveMovement() } }
```swift // CollectionViewの並び替え処理 並び順を保存している配列を編集する func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) { // 移動元を削除 let tempNumber = items.remove(at: sourceIndexPath.item) // 移動先に挿入 items.insert(tempNumber, at: destinationIndexPath.item) // 更新した配列itemsをCSVファイルに出力する CSV.outputFileList(saveData: items) // CSVファイルを読み込んでitemsを更新する items = CSV.readCsvFileList() // コレクションビューを更新する fileNavigatorCollectionView.reloadData() }
ヒントでもよいので、教えてください。
あなたの回答
tips
プレビュー