首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >把文件拖到我的NSTableVIew上?

把文件拖到我的NSTableVIew上?
EN

Stack Overflow用户
提问于 2015-04-26 02:32:38
回答 2查看 1.6K关注 0票数 3

我希望能够将(任意)文件拖到基于视图的NSTableView中,因此在委托中我设置了以下设置:

代码语言:javascript
复制
class MyViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource, NSDraggingDestination
{
    @IBOutlet var tableView: NSTableView! // connected in storyboard.

    override func viewDidLoad()
    {
        super.viewDidLoad()
        tableView.registerForDraggedTypes([NSFilenamesPboardType])
        // …
    }

    func draggingEntered(sender: NSDraggingInfo) -> NSDragOperation
    {
        println("Drag entered.")
        return .Copy
    }

    func prepareForDragOperation(sender: NSDraggingInfo) -> Bool
    {
        return true
    }

    func draggingUpdated(sender: NSDraggingInfo) -> NSDragOperation
    {
        return .Copy
    }
    // ...
}

但我的程序只是拒绝对拖放做出反应。当我将一个文件从Finder拖到它并发布时,文件图标就会飞回Finder。我的代码遗漏了什么吗?

更新:我添加了以下内容

代码语言:javascript
复制
func performDragOperation(sender: NSDraggingInfo) -> Bool
{
    return true
}

但还是没用。我是否应该用我的观点来实现这一点,而不是代表呢?文档说:“窗口对象或其委托可以实现这些方法;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-29 20:13:43

自我回答:

我偶然发现了这个问题,并意识到也有一些方法需要在数据源部分实现,即这些。拖拽现在起作用了。

票数 1
EN

Stack Overflow用户

发布于 2015-04-26 03:31:46

如果您查看苹果在其“接收拖动操作”文档中放入的示例代码,最后一个函数是:

- (BOOL)performDragOperation:(id )sender

您需要实现这一点,并返回"YES“来表示拖动成功。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29873026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档