如何在Xcode Interface Builder中使用Action Invocation?

问题描述 投票:0回答:1

当使用Argument绑定时,我在使IB Action Invocation工作时遇到了麻烦。 谁能解释一下这是如何工作的。 如果我不使用Argument绑定,那么绑定就会工作,但方法的调用却有一个nil参数。 我假设Argument绑定的目的是为了设置将在方法调用中传递的参数。 在我的例子中,我想获得一个对Table Cell Views对象的引用,我得到一个编译器错误,如下所示。

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

我正在将动作调用绑定到表单元格视图中的Button。

enter image description here

xcode cocoa interface-builder cocoa-bindings
1个回答
0
投票

解决办法。

在Report Queue Table View Controller类中:

  • 添加协议 NSTableViewDelegate 到声明中。你不需要实现任何方法。
  • 为数组控制器和表视图添加出口。
  • 为数组控制器和表视图添加一个动作方法
@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。

  • 连接网点。
  • 将表视图的委托人连接到报告队列表视图控制器。
  • 将按钮的操作连接到 cancelAction 的报告队列表视图控制器。
  • 删除按钮动作绑定。
© www.soinside.com 2019 - 2024. All rights reserved.