頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


macOSで同一アプリ内でtableからviewへドラッグ&ドロップする



↑このようにmacOS内のtableの表示項目(ファイル名とか)をドラッグし、NSViewオブジェクト部分へドロップする。

    func tableView(_ tableView: NSTableView, pasteboardWriterForRow row: Int) 
-> NSPasteboardWriting? {

return imageNames[row] as NSString
}
↑NSTableViewDataSourceのメソッドで何がドラッグ&ドロップされるのかを記述する。

    override func performDragOperation(_ draggingInfo: NSDraggingInfo) 
-> 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
}
↑するとドロップした時点でpaste boardに入ってる先ほど指定した型のオブジェクトを得ることができる。


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
スポンサーサイト




<< macOSでFinderなどからtableにドラッグ&ドロップする  TopPage  macOSの同一アプリ内で画像などをドラッグ&ドロップする >>

コメント


管理者にだけ表示を許可する
 

トラックバック

トラックバックURL
https://ringsbell.blog.fc2.com/tb.php/1334-8c7947ad




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.