我试过用多种方式问这个问题,但没有找到任何运气。很难将我的问题压缩成一行。
这是我所在的地方:
- viewcontroller1 发送一个变量(“X”或“Y”)给viewcontroller2
- viewcontroller2 有一个按钮。
- 如果发送到 viewcontroller2 的变量 == "x",viewcontroller2 上的按钮应该执行到 viewcontroller3 的 segue,并将其 .title 作为变量发送到该 View Controller
- 如果变量 == "y",viewcontroller2 上的按钮应该执行到 viewcontroller4 的 segue,并将其 .title 作为变量发送到该 View Controller
我可以执行第 1 步和第 2 步,但不能执行第 3 步和第 4 步。
这是我在 viewcontroller2 上的位置:
@IBAction func didTapButton(_ sender: Any) {
if sentvar == "X" {
performSegue(withIdentifier: "ToVC3", sender: self)
if sentvar == "Y" {
performSegue(withIdentifier: "ToVC4", sender: self)
然后在代码的下方,我添加了:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if (segue.identifier) == "ToVC3" {
let newvar = segue.destination as! VC3
newvar.var = (sender as! UIButton).title(for: .normal)!
但是……没用。 我不明白如何结合 prepareforsegue 来发送变量,以及 performsegue 依赖于先前发送的变量。
如果有帮助的话,我很乐意解释我尝试过的方法以及它是如何失败的,但我整天都被这个问题困住了,希望有技能的人能为我指明正确的方向.
谢谢!
最佳答案
在您的 viewController2
中存储 viewController3
和 viewController4
的 segueIdentifier。还要存储一个名为 letter
的变量。所以在 viewController2
中存储这些变量:
var letter = ""
var segueIdentifierThirdVC = "ToVC3"
var segueIdentifierFourthVC = "ToVC4"
当你从 ViewController1
转到 ViewController2
时,你需要传递上面的 letter
变量。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.destination == "ToVC1" {
let viewController2 = segue.destination as? ViewController2
viewController2.letter = // either x or y
}
}
然后在您的 ViewController2
中,当您单击按钮并想要继续时,您只需进行以下检查:
func buttonClicked() {
if letter == "x" {
self.performSegue(withIdentifier: segueIdentifierThirdVC, sender: nil)
} else if letter == "y" {
self.performSegue(withIdentifier: segueIdentifierFourthVC, sender: nil)
}
}
确保您存储了正确的标识符。
更新
要在 viewController3
和 viewController4
中设置标题标签,请执行以下操作:
在 viewController3
和 viewController4
中存储了一个名为:var title = ""
在调用 viewController2
中的 buttonClicked 函数并启动 performSegue
之后,您可以执行以下操作:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.destination == "ToVC3" {
let viewController3 = segue.destination as? ViewController3
viewController3.title = // pass title to ViewController3
} else if segue.destination == "ToVC4" {
let viewController4 = segue.destination as? ViewController4
viewController4.title = // pass title to ViewController4
}
}
关于ios - 如何让一个按钮根据发送的变量连接到多个 View Controller ,并发送一个新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44232389/