【发布时间】:2010-10-23 13:04:24
【问题描述】:
我有一个NSTableView,我希望允许用户将视频文件拖放到它上面。当他们删除文件时,它将作为一行添加到表格视图中。
我该怎么做呢?目前,tableview 从数组控制器获取数据(从 NSMutableArray 获取数据)
我找到了this 文档,但似乎无法使其工作..
我有..
- 创建了一个“TableCon”类(我改为继承自 NSTableView,而不是 NSObject)
- 将 NSTableView 类更改为 TableCon
- 将 NSTableView 的代理出口设置为该类
- 在 TableCon 的初始化中调用
registerForDraggedTypes - 已实现
- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender;(再次在 TableCon 中)
..但是,什么都没有,它就像我从未改变任何东西(没有错误),我做错了什么?
编辑:我已经尝试实施 Boaz Stuller 的建议,还找到了解决方案的 this 描述(first reply 包含第一篇文章的解决方案)。所以我现在做的是..
- 子类 NSArrayController 将内容提供给表格视图 (TableListCon)
- 将
tableViewoutlet 添加到 TableListCon(并将其指向 NSTableView) - 在 TableListCon 中实现 validateDrop、writeRowsWithIndexes 和 acceptDrop
- 在 tableView 插座上调用 registerForDraggedTypes。
同样,没有错误/警告,但似乎只调用了 awakeFromNib 方法(没有调用其他方法)
【问题讨论】:
-
这些是数据源方法。您需要将表视图的 dataSource 出口连接到实现这些方法的类,以便调用它们。
-
噢,那是我做错了!我假设“数据源”是指阵列控制器!现在一切正常,您可以将该信息添加到您的答案中以便我接受吗?谢谢波阿斯!
标签: objective-c cocoa drag-and-drop