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
での取り扱いダブルアクションは動作していないされていないのはなぜ?私はここに何かを逃していますか
なぜそれがMyViewController' 'にターゲットなしで動作して動作させるために
target
とdoubleAction
の両方を設定する必要がありますか? – Willeke