我希望能夠拖動(任何)文件,以我的觀點爲基礎的NSTableView的,所以委託我有這樣的設置:在Mac上,將文件拖到我的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
}
// ...
}
但我的程序只是拒絕向一拖N - 降反應。當我將一個文件從Finder拖到它並釋放時,文件圖標就會飛回Finder。我在代碼中丟失了什麼嗎?
更新:我加入這個
func performDragOperation(sender: NSDraggingInfo) -> Bool
{
return true
}
,但它仍然無法正常工作。我應該在我看來而不是代表實現這個嗎?該文件說,「無論是窗口對象或者其委託可以實現這些方法;」
看看[這個例子](http://stackoverflow.com/a/29233824/2227743)。 – Moritz