He creado una aplicación que tiene un NSTableView que representa una serie de archivos. A partir de esto, quiero ser capaz de arrastrar una fila (es decir, un nombre de archivo) desde mi NSTableView al Finder, y el archivo se creará en esa carpeta. Sin embargo, el bit que no puedo resolver es que necesito modificar el contenido del archivo original, antes de que se copie al Finder.Problema con arrastrar y soltar de NSTableView a Finder
He añadido la siguiente línea para que pueda arrastrar fuera de mi NSTableView:
[self.tableView setDraggingSourceOperationMask:NSDragOperationCopy forLocal:NO];
Y puede conseguirlo para copiar el archivo real, siempre añado una ubicación actual archivos a la mesa de trabajo, el uso de :
- (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];
}
Pero, porque quiero modificar el contenido del archivo, no quiero poner rutas de los archivos en la mesa de trabajo. He intentado usar NSFileWrapper, pero Finder no parece aceptar esto como un formato válido.
He consultado Google y he encontrado varias sugerencias de que puede crear un archivo temporal y usar esa ruta de archivo. Pero, esto se siente feo.
¿Es posible enviar datos al Finder? ¿Hay una manera de resolver esto?
Impresionante. Muchas muchas gracias. Había funcionado 5 minutos después de leer esto (después de haber pasado 3 horas tratando de obtener algo que funcionara anoche). Mi error era perder la relevancia de las extensiones de archivo para la promesa inicial. Gracias de nuevo. – RichS
+1 ¡Excelente y rara respuesta! – trojanfoe