Я пытаюсь заставить работать методом перетаскивания в быстром приложении Macos 4 с элементом управления NSBrowser.Код, который у меня есть на данный момент, выглядит следующим образом:
// Drag and Drop
func browser(_ browser: NSBrowser,
canDragRowsWith rowIndexes: IndexSet,
inColumn column: Int,
with event: NSEvent) -> Bool {
if column != 0 {
quizBrowser.canDragRows(with: rowIndexes, inColumn: column, with: event)
return true
}
return false
}
func browser(_ browser: NSBrowser,
writeRowsWith rowIndexes: IndexSet,
inColumn column: Int,
to pasteboard: NSPasteboard) -> Bool {
if column != 0 {
let row: Int = rowIndexes.last!
let item = quizBrowser.item(atRow: row, inColumn: column) as? BrowserItem
pasteboard.declareTypes([NSPasteboard.PasteboardType.string], owner: self)
pasteboard.setString(item!.name, forType: NSPasteboard.PasteboardType.string)
return true
}
return false
}
func browser(_ browser: NSBrowser,
validateDrop info: NSDraggingInfo,
proposedRow row: UnsafeMutablePointer<Int>,
column: UnsafeMutablePointer<Int>,
dropOperation: UnsafeMutablePointer<NSBrowser.DropOperation>) -> NSDragOperation {
return NSDragOperation.move
}
func browser(_ browser: NSBrowser,
acceptDrop info: NSDraggingInfo,
atRow row: Int,
column: Int,
dropOperation: NSBrowser.DropOperation) -> Bool {
let pboard = info.draggingPasteboard
let rowData = pboard().data(forType: NSPasteboard.PasteboardType.string)
return true
}
Я вижу, что первые две функции называются [canDragRowsWith и writeRowswith], а команда setString возвращает true, поэтому выглядиткак будто значение было сохранено в монтажном столе.
Но две другие функции не вызываются.Поэтому, хотя я вижу, как строка в NSBrowser перетаскивается, похоже, что элемент управления не зарегистрирован, чтобы принять удаление.Я также добавил это в функцию viewDidLoad
quizBrowser.setDraggingSourceOperationMask(NSDragOperation.generic, forLocal: true)
У кого-нибудь есть идеи, что мне не хватает?У кого-нибудь есть быстрый 3/4 пример перетаскивания с использованием NSBrowser, которым они хотят поделиться?
Спасибо