我希望能够将(任意)文件拖到基于视图的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
}但还是没用。我是否应该用我的观点来实现这一点,而不是代表呢?文档说:“窗口对象或其委托可以实现这些方法;
发布于 2015-04-26 03:31:46
如果您查看苹果在其“接收拖动操作”文档中放入的示例代码,最后一个函数是:
- (BOOL)performDragOperation:(id )sender
您需要实现这一点,并返回"YES“来表示拖动成功。
https://stackoverflow.com/questions/29873026
复制相似问题