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