Я пытаюсь реализовать перетаскивание из Finder в NSTableView моего приложения. В установке используется NSTableView
, контроллер массива, который действует как источник данных, используя привязки Cocoa к хранилищу основных данных.
Я сделал следующее, в основном следуя различным сообщениям в блогах, которые я нашел на SO и других сайтах.:
В awakeFromNib
моего контроллера представления я вызываю:
[[self sourcesTableView] registerForDraggedTypes:[NSArray arrayWithObjects: NSPasteboardTypePNG, nil]];
я создал подкласс NSArrayController и добавил следующие методы в свой подкласс (] Причина создания подклассов заключается в том, что контроллер массива должен быть проинформирован об отбрасывании, поскольку он действует как источник данных табличного представления.):
- (BOOL) tableView: (NSTableView *) aTableView acceptDrop: (id < NSDraggingInfo >) info row: (NSInteger) row dropOperation: (NSTableViewDropOperation)operation
Моя реализация для вышеизложенного в настоящее время только записывает в журнал, а затем возвращает логическое значение YES.
- (NSDragOperation) tableView: (NSTableView *) aTableView validateDrop: (id < NSDraggingInfo >) info proposedRow: (NSInteger) row proposedDropOperation: (NSTableViewDropOperation) operation
В IB у меня есть контроллер массива, указывающий на мой собственный подкласс NSArrayController.
Результат :ничего. Когда я перетаскиваю PNG с рабочего стола в табличное представление, ничего не происходит, и файл возвращается к своему исходному состоянию. Должно быть, я делаю что-то не так, но не понимаю, что. Где я ошибаюсь?