【发布时间】:2012-05-05 16:27:29
【问题描述】:
我正在尝试将 Finder 拖放到我的应用程序的 NSTableView 中。该设置使用NSTableView,这是一个数组控制器,它使用 Cocoa 绑定到 Core Data 存储充当数据源。
我做了以下,基本上是按照我在 SO 和其他网站上找到的各种博客文章:
在我调用的视图控制器的awakeFromNib 中:
[[self sourcesTableView] registerForDraggedTypes:[NSArray arrayWithObjects: NSPasteboardTypePNG, nil]];
我对 NSArrayController 进行了子类化,并将以下方法添加到我的子类中(子类化的原因是数组控制器需要被告知 drop,因为它充当表视图的数据源):
- (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 从桌面拖到我的表格视图上时,什么也没有发生,文件很高兴地弹回了它的原点。我一定做错了什么,但不明白是什么。我哪里错了?
【问题讨论】:
标签: cocoa drag-and-drop finder