2017-10-23 6 views
0

私は、ビューコントローラMyViewControllerを持っている:doubleActionは、View Controllerクラスで処理されている場合にのみ機能します。

class MyViewController: NSViewController { 

    private let componentList = ComponentList() 

    override func loadView() { 
     componentList.createView(view) 
     componentList.myTableView.doubleAction = #selector(doubleClickOnRow) 
    } 

    @objc func doubleClickOnRow() { 
     print("some row clicked = \(componentList.myTableView.clickedRow)") 
    } 
} 

このダブルクリックアクションが問題なく動作します。私はComponentList内でこのダブルクリックアクションを置くしようとすると、しかし、(アクション関数が呼び出されていない)働いていない:

class ComponentList: NSObject, NSTableViewDelegate, NSTableViewDataSource { 
    let myTableView = NSTableView() 

    override func createView(view: NSView) { 
     let scrollView = NSScrollView() 
     view.addSubview(scrollView) 
     scrollView.documentView = myTableView    
     // set up some constraints, ignore here... 
     myTableView.delegate = self 
     myTableView.dataSource = self 

     myTableView.doubleAction = #selector(doubleClickOnRow) 
    } 

    @objc func doubleClickOnRow() { 
     print("some row clicked = \(myTableView.clickedRow)") 

     // never being called, why is that? 
    } 
} 

ComponentListでの取り扱いダブルアクションは動作していないされていないのはなぜ?私はここに何かを逃していますか

答えて

1

あなたはそれがComponentList

override func createView(view: NSView) { 
    let scrollView = NSScrollView() 
    view.addSubview(scrollView) 
    scrollView.documentView = myTableView    
    // set up some constraints, ignore here... 
    myTableView.delegate = self 
    myTableView.dataSource = self 

    myTableView.doubleAction = #selector(doubleClickOnRow) 
    myTableView.target = self // self here is ComponentList 
} 
+1

なぜそれがMyViewController' 'にターゲットなしで動作して動作させるためにtargetdoubleActionの両方を設定する必要がありますか? – Willeke

関連する問題