如何在 Xcode Interface Builder 中使用 Action Invocation

How do I use Action Invocation in Xcode Interface Builder

我在使用参数绑定时无法使 IB 操作调用工作。有人可以解释这是如何工作的。如果我不使用 Argument 绑定,则绑定有效,但使用 nil 参数调用该方法。我假设 Argument 绑定旨在设置将在方法调用中传递的参数。在我的例子中,我想获得对 Table Cell Views 对象的引用。 我收到如下编译器错误:

Exception while running ibtool: *** -[__NSArrayM insertObject:atIndex:]: object cannot be nil

我正在将操作调用绑定到 Table 单元格视图中的按钮。

解决方法:

在报表队列中Table视图控制器class:

  • 在声明中添加协议 NSTableViewDelegate。您不必实施任何方法。
  • 为阵列控制器和 table 视图添加插座。
  • 添加一个动作方法
@IBAction func cancelAction(_ sender: NSButton) {
    let row = tableView.row(for: sender)
    if let objects = arrayController.arrangedObjects as? [String] {
        let object = objects[row]
        cancel(object)
    }
}

在 IB 中:

  • 连接插座。
  • 将 table 视图的委托连接到报表队列 Table 视图控制器。
  • 将按钮的操作连接到报告队列 Table 视图控制器的 cancelAction
  • 删除按钮操作绑定。