macOSで同一アプリ内でtableからviewへドラッグ&ドロップする
↑このようにmacOS内のtableの表示項目(ファイル名とか)をドラッグし、NSViewオブジェクト部分へドロップする。
func tableView(_ tableView: NSTableView, pasteboardWriterForRow row: Int)↑NSTableViewDataSourceのメソッドで何がドラッグ&ドロップされるのかを記述する。
-> NSPasteboardWriting? {
return imageNames[row] as NSString
}
override func performDragOperation(_ draggingInfo: NSDraggingInfo)↑するとドロップした時点でpaste boardに入ってる先ほど指定した型のオブジェクトを得ることができる。
-> Bool {
let pasteBoard = draggingInfo.draggingPasteboard
let point = convert(draggingInfo.draggingLocation, from: nil)
if let strings = pasteBoard.readObjects(forClasses: [NSString.self],
options: nil) as? [String] {
processImages(strings, center: point)
}
return true
}
YamaguchiTatsuya/DragAndDrop_TableToView: masOS sample code to drag and drop files from NSTable to NSView object
↑GitHubに置いたサンプルコードはこちら。
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