Próbuję zaimplementować przeciąganie i upuszczanie z Findera na NSTableView mojej aplikacji. Konfiguracja wykorzystuje NSTableView
, kontroler tablicowy, który działa jako źródło danych przy użyciu wiązań Cocoa do magazynu danych podstawowych.NSTableView i przeciągnij i upuść z Findera
zrobiłem następujący, w zasadzie po różnych blogach znalazłem na SO i inne strony:
W awakeFromNib
mojego widoku kontrolera wzywam:
[[self sourcesTableView] registerForDraggedTypes:[NSArray arrayWithObjects: NSPasteboardTypePNG, nil]];
I podklasy NSArrayController i dodaje się następujący metody do mojej podklasy (rozumowanie dla podklasy polega na tym, że kontroler tablic musi zostać poinformowany o upuszczeniu, ponieważ działa jako źródło danych widoku tabeli):
- (BOOL) tableView: (NSTableView *) aTableView acceptDrop: (id <NSDraggingInfo>) info row: (NSInteger) row dropOperation: (NSTableViewDropOperation)operation
Moja implementacja powyższego wpisuje się tylko do dziennika, a następnie zwraca wartość boolean YES.
- (NSDragOperation) tableView: (NSTableView *) aTableView validateDrop: (id <NSDraggingInfo>) info proposedRow: (NSInteger) row proposedDropOperation: (NSTableViewDropOperation) operation
W IB Mam kontroler macierzy skierowaną do mojego niestandardowego NSArrayController podklasy.
Wynik: nic. Kiedy przeciągam plik PNG z pulpitu do mojego widoku tabeli, nic się nie dzieje, a plik szczęśliwie odskakuje z powrotem do swojego źródła. Muszę robić coś złego, ale nie rozumiem co. Gdzie się mylę?
Dzięki, ale widok tabeli nadal nie akceptuje przeciągania/upuszczania. Każdy plik, który przeciągam z Findera odbija się ... Używam wiązań Cocoa do dołączenia tabeli do jej źródła danych. – Roger
Zaktualizowałem swoją odpowiedź. Nadal musisz zaimplementować obiekt źródła danych. –