如何以编程方式连接 Swift/MacOS 中的出口和操作

How to connect outlets and actions in Swift / MacOS programaticly

我有一个简单的例子。 我用 ctrl 将左按钮 1 和标签 1 连接到 contollerclass。

我如何以编程方式对右按钮 2 标签 2 执行相同操作(无需按住 ctrl 键拖动)

这是我的代码:

class ViewController: NSViewController {

  @IBOutlet weak var label1: NSTextField!  //connected with ctrl-drag
  @IBOutlet weak var button1: NSButton!    //connected with ctrl-drag

  @IBOutlet weak var label2: NSTextField!  //not yet connected
  @IBOutlet weak var button2: NSButton!    //not yet connected

  @IBAction func button1Pressed(_ sender: Any)  //connected with ctrl-drag
  { label1.stringValue = "button-I"
    button1.title = "pressed"
  }

  @IBAction func button2Pressed(_ sender: Any)  //not yet connected
  { label2.stringValue = "button-II"
    button2.title = "pressed"
  }
  override func viewDidLoad() {
    super.viewDidLoad()
  }
}

如果你想使用情节提要并在那里布置你的所有元素,你无法真正避免 ctrl 拖动(或者如果你打开右侧的连接检查器则直接拖动)。

但是,您可以在代码中以编程方式创建第二个按钮,而根本不使用故事板。然后也以编程方式添加您的约束。

如果愿意,您也可以通过编程方式添加按钮的操作(使用 addTarget),但这至少需要设置 IBOutlet 才能引用按钮。