【发布时间】:2017-05-28 21:56:03
【问题描述】:
我尝试过多种方式来问这个问题,但没有找到任何运气。很难将我的问题压缩成一行。
这是我所在的位置:
- viewcontroller1 向 viewcontroller2 发送一个变量(“X”或“Y”)
- viewcontroller2 有一个按钮。
- 如果发送到 viewcontroller2 == "x" 的变量,则 viewcontroller2 上的按钮应该执行到 viewcontroller3 的 segue,并将其 .title 作为变量发送到该视图控制器
- 如果变量 == "y",viewcontroller2 上的按钮应该执行到 viewcontroller4 的 segue,并将其 .title 作为变量发送到该视图控制器
我可以执行第 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来发送一个变量,而performegue依赖于之前发送的变量。
如果有帮助,我很乐意解释我尝试过的方法以及它如何不起作用,但是我整天都被这个问题所困扰,希望有技能的人可以为我指明正确的方向.
谢谢!
【问题讨论】:
-
从
viewcontroller2添加代码的相关部分。其中包括UIButtonsIBAction和您的prepare(for:, sender:)方法以及持有“变量”的属性。 -
您的方法看起来是正确的。当您尝试时,究竟是什么不起作用?
-
罗伯特:当我按下 viewcontroller2 上的按钮时,我收到“Thread1 信号:SIGABRT”崩溃和错误提示:“无法将 'myproject.viewcontroller2' (0x101af1ab0) 类型的值转换为 'UIButton '"
标签: ios swift segue viewcontroller