macOSでFinderなどからtableにドラッグ&ドロップする
↑このようにアプリ外のファイルをNSTableViewオブジェクトにドラッグ&ドロップする。
NSTableViewはNSViewを継承している(※1)のでNSViewからのドラッグ&ドロップと同じでは?と最初は思ったが別な記述が必要になる。
optional func tableView(_ tableView: NSTableView,というNSTableViewDataSourceのメソッドでtableにドロップが可能かどうかの判定を行ってたりする。
validateDrop info: NSDraggingInfo,
proposedRow row: Int,
proposedDropOperation dropOperation: NSTableView.DropOperation)
-> NSDragOperation
実際にドロップされたファイル名などはNSTableViewのサブクラスで処理されるので、tableに表示するためdelegateを使ってViewControllerに渡し、tableに表示している。
YamaguchiTatsuya/DragAndDrop_OtherToTable: masOS sample code to drag and drop files from other app to NSTableView object
↑GitHubに置いたサンプルコードはこちら。
※1 NSTableViewの親はNSControlで、その親はNSView
macOS 10.15.2 Catalina
Swift 5.1.3
Xcode 11.3.1
関連記事
macOSでFinderなどからviewにドラッグ&ドロップする
macOSの同一アプリ内で画像などをドラッグ&ドロップする
macOSで同一アプリ内でtableからviewへドラッグ&ドロップする
macOSでFinderなどからtableにドラッグ&ドロップする(当記事)
参考記事
Using Drag and Drop with NSTableView — Nate Thompson
Drag and Drop Tutorial for macOS | raywenderlich.com
スポンサーサイト
<< SwiftでInt?をCGFloat?にしたい TopPage macOSで同一アプリ内でtableからviewへドラッグ&ドロップする >>
トラックバック
トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1335-73c4b953
https://ringsbell.blog.fc2.com/tb.php/1335-73c4b953