当前位置:  开发笔记 > 编程语言 > 正文

将文件拖放到NSTableView上?

如何解决《将文件拖放到NSTableView上?》经验,为你挑选了1个好方法。

我有一个NSTableView我希望允许用户将视频文件拖放到.当他们删除文件时,它将在表视图中添加为一行.

我该怎么做呢?目前tableview的数据来自一个数组控制器(从NSMutableArray获取数据)

我找到了这个文档,但似乎无法使它工作..

我有..

制作了一个"TableCon"类(我改为继承自NSTableView,而不是NSObject)

将NSTableView类更改为TableCon

将NSTableView的委托出口设置为该类

registerForDraggedTypes在TableCon的init中调用

实现- (NSDragOperation)draggingEntered:(id )sender;(再次在TableCon中)

但是,没什么,它的行为就像我从未改变过任何事情(没有错误),我做错了什么?

编辑:我已经试过落实波阿斯Stuller的建议,同时也发现了这个解决方案的描述(第一个答复包括解决第一篇文章).所以我现在所做的就是......

子类NSArrayController,它将内容提供给表视图(TableListCon)

添加tableView插件到TableListCon(并指向NSTableView)

在TableListCon中实现validateDrop,writeRowsWithIndexes和acceptDrop

在tableView出口上调用registerForDraggedTypes.

同样,没有错误/警告,但似乎只调用了awakeFromNib方法(没有调用其他方法)



1> Boaz Stuller..:

NSTableView处理拖放操作的方式与通用视图不同,这总体上是一件好事.这意味着您不必手动处理复杂的突出显示,单元格跟踪和表格所需的插入行为.

可在此处找到所需内容的说明.基本上,你还是叫-registerDraggedTypes:(一般在-awakeFromNib方法),但不是执行NSDraggingDestination方法,要实现拖放相关联的各种数据源的方法,它可以找到这里.您不需要将NSTableView子类化为以这种方式实现拖放.

请注意那些是数据源方法.您需要将表视图的dataSource出口挂钩到实现这些方法的类,以便调用它们.

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有