Ich weiß nichts über C#, aber Sie haben nach einer Lösung in Swift oder Objective-C gefragt. Das kann ich helfen! Die unten ist Swift 4.
Zunächst einmal sicher, dass Ihr ViewController
ist die Datenquelle des Tabellenansicht:
class ViewController: NSViewController, NSTableViewDataSource
Sie auch, dass die Verbindung vornehmen müssen entweder im Code oder in IB.
Sie müssen dann Ihre Tabellenansicht als Ziehquelle festlegen. Wählen Sie den Vorgang, den Sie möchten, in der Regel entweder .move
oder .copy
:
tableView.setDraggingSourceOperationMask(.move, forLocal: false)
Dieses Beispiel geht davon aus, dass Sie einen Arraycontroller verwenden den Inhalt der Tableview zu verwalten. Du solltest es wirklich sein, es macht eine Menge Dinge einfacher. In diesem Beispiel werden auch mehrere Dateien gezogen. (Es wird für eine einzelne Datei arbeiten, aber es gibt auch andere Ansätze, wenn man immer nur einen ziehen mag.)
In Ihrer Viewcontroller Klasse, implementieren diese Methode:
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
}
Sie können mehr über das erfahren NSFilenamesPboardTypeTemp
hacken here.
Und das war's! Neu kompilieren und Sie sollten in der Lage sein, eine oder mehrere Ihrer Dateien zu verschieben, indem Sie sie in ein Finder-Fenster ziehen. Einfach. :-)