我有一个NSTableView
我希望允许用户将视频文件拖放到.当他们删除文件时,它将在表视图中添加为一行.
我该怎么做呢?目前tableview的数据来自一个数组控制器(从NSMutableArray获取数据)
我找到了这个文档,但似乎无法使它工作..
我有..
制作了一个"TableCon"类(我改为继承自NSTableView,而不是NSObject)
将NSTableView类更改为TableCon
将NSTableView的委托出口设置为该类
registerForDraggedTypes
在TableCon的init中调用
实现- (NSDragOperation)draggingEntered:(id
(再次在TableCon中)
但是,没什么,它的行为就像我从未改变过任何事情(没有错误),我做错了什么?
编辑:我已经试过落实波阿斯Stuller的建议,同时也发现了这个解决方案的描述(第一个答复包括解决第一篇文章).所以我现在所做的就是......
子类NSArrayController,它将内容提供给表视图(TableListCon)
添加tableView
插件到TableListCon(并指向NSTableView)
在TableListCon中实现validateDrop,writeRowsWithIndexes和acceptDrop
在tableView出口上调用registerForDraggedTypes.
同样,没有错误/警告,但似乎只调用了awakeFromNib方法(没有调用其他方法)
NSTableView处理拖放操作的方式与通用视图不同,这总体上是一件好事.这意味着您不必手动处理复杂的突出显示,单元格跟踪和表格所需的插入行为.
可在此处找到所需内容的说明.基本上,你还是叫-registerDraggedTypes:(一般在-awakeFromNib方法),但不是执行NSDraggingDestination方法,要实现拖放相关联的各种数据源的方法,它可以找到这里.您不需要将NSTableView子类化为以这种方式实现拖放.
请注意那些是数据源方法.您需要将表视图的dataSource出口挂钩到实现这些方法的类,以便调用它们.