小编Ric*_*chS的帖子

从NSTableView拖放到Finder的问题

我创建了一个具有NSTableView的应用程序,它代表了一系列文件.从这里,我希望能够将一行(即文件名)从我的NSTableView拖到Finder,并在该文件夹中创建文件.但是,我无法解决的问题是,在将其复制到Finder之前,我需要修改原始文件的内容.

我添加了以下行,以便我可以拖到我的NSTableView之外:

[self.tableView setDraggingSourceOperationMask:NSDragOperationCopy forLocal:NO];    
Run Code Online (Sandbox Code Playgroud)

我可以让它复制实际文件,只要我将当前文件位置添加到粘贴板,使用:

- (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];
} 
Run Code Online (Sandbox Code Playgroud)

但是,因为我想修改文件的内容,所以我不想将文件路径放到粘贴板上.我尝试过使用NSFileWrapper,但Finder似乎并不接受这种格式作为有效格式.

我已经检查了Google,我发现了一些建议,你可以创建一个临时文件并使用该文件路径.但是,这感觉很难看.

是否可以向Finder发送数据?有办法解决这个问题吗?

macos cocoa drag-and-drop objective-c

9
推荐指数
2
解决办法
3643
查看次数

标签 统计

cocoa ×1

drag-and-drop ×1

macos ×1

objective-c ×1