【问题标题】:Changing a UILabel's text attribute according to where the segue was preformed根据执行 segue 的位置更改 UILabel 文本属性
【发布时间】:2021-08-11 15:39:35
【问题描述】:

我的问题是我想根据哪个按钮触发了 segue 来更改 UILabel 的文本。我的 QuestionViewController(第二个视图控制器)的标识符是“goToQuestion”,我有 2 个按钮,一个是真的按钮,一个是敢于按钮,它们都是可以对 QuestionViewController 执行 segues 的 UI 按钮,现在主要问题是如何更新我的 UILabel 说如果 segue 是通过truthPressed UIButton 执行的,并说如果 segue 是通过dararePressed 执行的,我敢肯定它需要和 if 和 else 语句必须在 QuestionViewController 中,或者一个“if segue”。标识符=dararePressed ...“我只是很困惑,希望有人能启发我

@IBAction func truthPressed(_ sender: UIButton) {
    performSegue(withIdentifier: "goToQuestion", sender: self)
    }

@IBAction func darePressed(_ sender: UIButton) {
    performSegue(withIdentifier: "goToQuestion", sender: self)
}

【问题讨论】:

  • 覆盖prepareForSegue,要么保留一个变量以了解按下了哪个按钮,然后在prepareForSegue中读取它,或者如果您有两个IBOutlet,将其传递为sender而不是@987654325 @ 并读取参数,或者在 sender 中发送您想要的其他变量并读取它...
  • 感谢您的帮助!

标签: swift xcode


【解决方案1】:

你需要覆盖prepare(for segue:

@IBAction func truthPressed(_ sender: UIButton) {
    performSegue(withIdentifier: "goToQuestion", sender: "truth")
}

@IBAction func darePressed(_ sender: UIButton) {
    performSegue(withIdentifier: "goToQuestion", sender: "dare")
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {    
    if let des = segue.destination as? QuestionViewController { 
        des.sentValue = sender as! String 
    } 
}

class QuestionViewController:UIViewController { 
    var sentValue = "" 
    override func viewDidLoad() {
        super.viewDidLoad() 
        print(sentValue)
    }
}

【讨论】:

  • 非常感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-12
  • 1970-01-01
  • 1970-01-01
  • 2019-07-27
  • 1970-01-01
相关资源
最近更新 更多