如何以编程方式从一个按钮序列化到多个视图控制器
How to programmatically seque to multiple view controllers from a button
我有一个带有很多 (36) 个按钮的视图控制器,我希望这些按钮中的每一个都根据程序中前面设置的变量转至特定的视图控制器。换句话说,根据发送到包含按钮的 viewcontroller 的变量,任何按钮都可能会转到 15 个不同的视图控制器...
我想如果我单击每个按钮并将其拖到每个 viewcontroller... 我想我可以完成这项工作,但它看起来很傻而且很乱。
我试过这样做:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if variable == "Whatever" {
let send = segue.destination as! AViewController
send.variablesent = (sender as! UIButton).title(for: .normal)!}
}
但这只有在我单击情节提要中的按钮并将其拖动到 "AViewController" 时才有效。
感谢任何帮助,谢谢!!
为此,你可以从 SourceViewController
到 DestinationViewController
而不是从 Button
到 Controller
,然后当你在你的 perfromSegue
中调用按钮操作然后在 perfromSegue
调用中将按钮引用作为 sender
传递。
@IBAction func buttonAction(_ sender: UIButton) {
self.performSegue(withIdentifier: "segueIdentifier", sender: sender)
}
现在 prepareForSegue
将发件人转换为 UIButton
并根据它设置标题。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if variable == "Whatever" {
let send = segue.destination as! AViewController
if let button = sender as? UIButton {
send.variablesent = button.titleLabel?.text ?? "Default value"
}
}
}
我有一个带有很多 (36) 个按钮的视图控制器,我希望这些按钮中的每一个都根据程序中前面设置的变量转至特定的视图控制器。换句话说,根据发送到包含按钮的 viewcontroller 的变量,任何按钮都可能会转到 15 个不同的视图控制器...
我想如果我单击每个按钮并将其拖到每个 viewcontroller... 我想我可以完成这项工作,但它看起来很傻而且很乱。
我试过这样做:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if variable == "Whatever" {
let send = segue.destination as! AViewController
send.variablesent = (sender as! UIButton).title(for: .normal)!}
}
但这只有在我单击情节提要中的按钮并将其拖动到 "AViewController" 时才有效。
感谢任何帮助,谢谢!!
为此,你可以从 SourceViewController
到 DestinationViewController
而不是从 Button
到 Controller
,然后当你在你的 perfromSegue
中调用按钮操作然后在 perfromSegue
调用中将按钮引用作为 sender
传递。
@IBAction func buttonAction(_ sender: UIButton) {
self.performSegue(withIdentifier: "segueIdentifier", sender: sender)
}
现在 prepareForSegue
将发件人转换为 UIButton
并根据它设置标题。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if variable == "Whatever" {
let send = segue.destination as! AViewController
if let button = sender as? UIButton {
send.variablesent = button.titleLabel?.text ?? "Default value"
}
}
}