如何在 NSStoryboardSegue 中使用 tableView.row

How to use tableView.row with NSStoryboardSegue

我正在尝试将 NSTableView 中所选单元格的详细信息发送到另一个 ViewController。

我有一个按钮:

@IBAction func detailButtonTapped(_ sender: Any) {
    performSegue(withIdentifier: "toDetailsVC", sender: self)
}   

并为 segue 做准备:

override func prepare(for segue: NSStoryboardSegue, sender: Any?) {
    let row = self.tableView.row(for: sender as! NSButton)
    if segue.identifier == "toDetailsVC" {
        
        let destination = segue.destinationController as! DetailsVeiwController
        destination.name = orders[row].name!
    }
}    

错误:

Could not cast value of type 'Test.ViewController' (0x100022b98) to 'NSButton' (0x7fff8b59b260).

当我检查按钮内部的 let row = self.tableView.row(for: sender as! NSButton) 时,它工作正常。
我离开这里了吗?这是哪里出错了?

self 是视图控制器。您必须传递按钮 sender 。我建议将 sender 参数声明为具体类型

@IBAction func detailButtonTapped(_ sender: NSButton) {
    performSegue(withIdentifier: "toDetailsVC", sender: sender)
}