2015-04-26 42 views
3

我希望能夠拖動(任何)文件,以我的觀點爲基礎的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 
} 

,但它仍然無法正常工作。我應該在我看來而不是代表實現這個嗎?該文件說,「無論是窗口對象或者其委託可以實現這些方法;」

+0

看看[這個例子](http://stackoverflow.com/a/29233824/2227743)。 – Moritz

回答

1

自我回答:

我偶然發現this question,並意識到有需要在數據源板塊也實現方法;即these。現在,拖放式工作正常。

+1

你可以發佈你的最終解決方案嗎? –

相關問題