0

我有这一行“func tableView(_ tableView:NSTableView,didClick tableColumn:NSTableColumn){code here}”

这个函数不做任何事情。我想单击表格视图中的一行并在单击时执行一些操作。但它什么也没做。该行显示正确,但缺少操作。我还在该函数中添加了“print(“Clicked”),但即使这样也不会显示在日志信息中”

我还能怎么做呢?

4

3 回答 3

0

经过测试,我发现它是通过点击列区域触发的。正如它的参数所说,“确实点击了表格列”,而不是表格行。

于 2020-10-19T10:40:24.713 回答
0

用于NSTableView.selectionDidChangeNotification检测选择

 override func viewDidLoad() {
        super.viewDidLoad()

        NotificationCenter.default.addObserver(self, selector: #selector(ViewController.didSelectRow(_:)), name: NSTableView.selectionDidChangeNotification, object: tableView)
    }



    @objc
    func didSelectRow(_ noti: Notification){
        guard let table = noti.object as? NSTableView else {
            return
        }
        let row = table.selectedRow
        print(row)
    }


    deinit {
        NotificationCenter.default.removeObserver(self)
    }
于 2020-03-02T05:57:07.033 回答
0

从文档中tableView(_:didClick:):“告诉代表在指定的表格中单击了鼠标按钮,但没有拖动该列。”。连续单击时不会调用此方法。如果您想在表格视图中捕捉点击,请将表格视图、行视图或单元格视图子类化并覆盖mouseDown(with:)。另一种解决方案:让表格视图处理点击并使用选定的行。委托有几种方法来检测选择的变化。

于 2017-09-16T10:55:22.360 回答