如何以编程方式连接 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 才能引用按钮。
我有一个简单的例子。 我用 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 才能引用按钮。