Stworzyłem aplikację, która ma NSTableView, który reprezentuje serię plików. Z tego chcę móc przeciągnąć wiersz (tj. Nazwę pliku) z mojego NSTableView do Findera, a plik zostanie utworzony w tym folderze. Jednak nie mogę zrozumieć, że muszę zmodyfikować zawartość oryginalnego pliku, zanim zostanie on skopiowany do Findera.Problem z Drag-Drop z NSTableView do Findera
Dodałem następujący wiersz więc mogę przeciągnąć poza moim NSTableView:
[self.tableView setDraggingSourceOperationMask:NSDragOperationCopy forLocal:NO];
I mogę je skopiować rzeczywisty plik, pod warunkiem dodać aktualną lokalizację plików na stole montażowym, używając :
- (BOOL)tableView:(NSTableView *)aTableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard {
[pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] owner:nil];
NSMutableArray* dragfiles = [[NSMutableArray alloc] init];
NSString* file = [self.files objectAtIndex:row];
NSString* filepath = [[[self.pathControl URL] path] stringByAppendingPathComponent:file];
[dragfiles addObject:filepath];
[pboard setPropertyList:dragfiles forType: NSFilenamesPboardType];
[dragfiles release];
}
jednak, ponieważ chcę, aby zmodyfikować zawartość pliku, nie chcę umieścić filepaths na stole montażowym. Próbowałem używać NSFileWrapper, ale Finder nie wydaje się, aby zaakceptować to jako prawidłowy format.
Sprawdziłem Google i znalazłem kilka sugestii, że możesz utworzyć tymczasowy plik i użyć tej ścieżki do pliku. Ale to jest brzydkie.
Czy można wysłać dane do Findera? Czy istnieje sposób na rozwiązanie tego problemu?
Awesome. Wielkie dzięki. Czy to działało 5 minut po przeczytaniu tego (po 3 godzinach próbowania dostać coś działającego ostatniej nocy). W moim błędzie brakowało znaczenia rozszerzeń plików dla początkowej obietnicy. Dzięki jeszcze raz. – RichS
+1 Doskonała i rzadka odpowiedź! – trojanfoe