Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在Mac上,将文件拖动到我的NSTableVIew?_Macos_Swift_Drag And Drop_Nstableview - Fatal编程技术网

Macos 在Mac上,将文件拖动到我的NSTableVIew?

Macos 在Mac上,将文件拖动到我的NSTableVIew?,macos,swift,drag-and-drop,nstableview,Macos,Swift,Drag And Drop,Nstableview,我希望能够将(任何)文件拖动到基于视图的NSTableView,因此在委托中我有以下设置: class MyViewController: NSViewController, NSTableViewDelegate, NSTableViewDataSource, NSDraggingDestination { @IBOutlet var tableView: NSTableView! // connected in storyboard. override func viewD

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

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。我的代码中遗漏了什么吗

更新:我添加了这个

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

但它仍然不起作用。我应该在我的视图中而不是在委托中实现这一点吗?文档中说“窗口对象或其委托可以实现这些方法;”

如果您查看Apple在其示例代码中的示例代码,则他们在其中放置的最后一个函数是以下实现:

您需要实现该操作并返回“
YES
”以指示拖动成功。

自我回答:


我偶然发现,并意识到在数据源领域也有需要实现的方法;就是。拖放功能现在可以使用了。

请看一下。谢谢。我加了这个,但仍然不起作用。请看问题中我的更新。你能发布你的最终解决方案吗?