如何以编程方式在Swift / MacOS中连接插座和操作

时间:2017-05-24 15:15:49

标签: swift xcode macos ibaction iboutlet

我有一个简单的例子。 我将左按钮1和label1与ctrl-draging连接到控制器类。

如何以编程方式对右侧button2 label2执行相同的操作(不使用ctrl-draging)

Xcode

这是我的代码:

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()
  }
}

1 个答案:

答案 0 :(得分:2)

如果您想使用故事板并在那里布置所有元素,则无法真正避免使用ctrl拖动(或者只是在右侧打开连接检查器时拖动)。

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

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