私はC#については何も知りませんが、SwiftまたはObjective-Cで解決策を尋ねました。私が助けることができること!あなたはまた、コード内またはIBのいずれかでその接続を行う必要があります
class ViewController: NSViewController, NSTableViewDataSource
:以下、あなたのViewController
は、テーブルビューのデータソースであることを確認し、すべての4
まずスウィフトです。
次に、テーブルビューをドラッグ元として設定する必要があります。あなたがしたい操作を、選択してください通常どちらか.move
または.copy
:
tableView.setDraggingSourceOperationMask(.move, forLocal: false)
この例では、のtableViewのコンテンツを管理するためにArrayControllerを使用していることを前提としています。あなたは本当にすべきです、それは物事のホストを容易にします。また、この例は、複数のファイルをドラッグするためのものです。 (これは、単一のファイルのために働くだろうが、あなたがしか1をドラッグしたい場合は、他のアプローチがあります。)
をあなたのViewControllerクラスでは、このメソッドを実装します。
func tableView(_ tableView: NSTableView, writeRowsWith rowIndexes: IndexSet, to pboard: NSPasteboard) -> Bool {
var filePaths = [String]()
// Swift 4 hack--the FilenamesPboardType is missing
let NSFilenamesPboardTypeTemp = NSPasteboard.PasteboardType("NSFilenamesPboardType")
pboard.addTypes([NSFilenamesPboardTypeTemp], owner: nil)
if let audioFiles = audioFilesArrayController.arrangedObjects as? [AudioFile] {
for i in rowIndexes {
filePaths.append(audioFiles[i].Filepath)
}
}
pboard.setPropertyList(filePaths, forType: NSFilenamesPboardTypeTemp)
return true
}
あなたはについての詳細を学ぶことができますNSFilenamesPboardTypeTemp
ハックhere。
それだけです!再コンパイルし、1つまたは複数のファイルをFinderウィンドウにドラッグして移動することができます。シンプル。 :-)