我试图实现从Finder拖放到我的应用程序的NSTableView。该设置使用一个数组控制器NSTableView
,该控制器充当使用Cocoa绑定到Core Data存储的数据源。NSTableView并从查找器拖放
我做了以下,基本上采取各种博客文章,我发现在SO和其他网站:
在我的视图控制器的awakeFromNib
我打电话:
[[self sourcesTableView] registerForDraggedTypes:[NSArray arrayWithObjects: NSPasteboardTypePNG, nil]];
我子类NSArrayController的,并增加了以下方法到我的子类(子类的推理是因为它作为表视图的数据源需要通知阵列控制器):
- (BOOL) tableView: (NSTableView *) aTableView acceptDrop: (id <NSDraggingInfo>) info row: (NSInteger) row dropOperation: (NSTableViewDropOperation)operation
我上面的实现只写入日志,然后返回一个布尔值YES。
- (NSDragOperation) tableView: (NSTableView *) aTableView validateDrop: (id <NSDraggingInfo>) info proposedRow: (NSInteger) row proposedDropOperation: (NSTableViewDropOperation) operation
在IB我有阵列控制器指向我的自定义NSArrayController子类。
结果:没有。当我从桌面拖动一个PNG到我的表格视图时,没有任何反应,文件高兴地反弹回原点。我一定做错了什么,但不明白是什么。我哪里错了?
谢谢,但表格视图仍然不接受任何拖放。我从Finder中拖动的任何文件都会反弹回来....我使用Cocoa绑定将表格附加到其数据源。 – Roger 2012-04-25 08:05:45
我已经更新了我的答案。你仍然需要实现一个数据源对象。 – 2012-04-25 08:16:54