【发布时间】:2010-12-02 09:15:46
【问题描述】:
我想从 NSTableView 行中拖动文件以将其复制到另一个应用程序(即 Finder)。我实施了本指南的前两个步骤(“配置您的表格视图”、“开始拖动操作”),并认为这可以解决问题: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TableView/Tasks/UsingDragAndDrop.html
但是,当我尝试拖动一行时,行文本跟随我的鼠标,但文件在释放时不会复制。这是我在初始化时发送到 UITableView 的内容:
#define librarySongDataType @"NSFileContentsPboardType"
- (void)awakeFromNib
{
[self setDraggingSourceOperationMask:NSUIntegerMax forLocal:YES]; // allow interapplication drags
[self registerForDraggedTypes:[NSArray arrayWithObject:librarySongDataType] ]; // NSFileContentsPboardType
}
这是我在 NSTableView 的数据源(NSArrayController)中处理拖动的方式:
- (BOOL)tableView:(NSTableView *)aTableView writeRowsWithIndexes:(NSIndexSet *)rowIndexes toPasteboard:(NSPasteboard *)pboard
{
NSLog(@"writeRowsWithIndexes");
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:rowIndexes];
[pboard setData:data forType:librarySongDataType];
return YES;
}
需要明确的是,我不是想将文件拖到我的表格视图中,我只是想将文件拖出它。
【问题讨论】:
-
我想你的意思是
NSTableView。UITableView仅在 iPhone 上。 -
啊,对不起,是的。我的意思是 NSTableView。感谢您的指正。已编辑。
标签: objective-c cocoa macos drag-and-drop