我试图创建一个计算器,向用户显示他们的大学成绩。用户点击按钮,根据他们的选择,UI视图更新并显示下一个问题。我的代码在我需要它访问以前点击过的按钮之前一直在工作,这个按钮以前是在一个不同的视图控制器上选择的。我特别遇到的问题是在一个视图控制器上,用户可以选择是要知道Calculation1(与顶部按钮sender.tag == 1
相关)还是Calculation2(底部按钮sender.tag == 2
)。无论按下哪个按钮,在新的视图控制器上对同一问题执行segue。在回答完双方的问题后,只有一个按钮可以按下。我试图为if Calculation1(来自上一个VC)编写if语句,然后将视图更新到下一个问题,如果选择Calculation2,则为下一个问题执行另一个VC的segue。我试图使用布尔值的方式是作为前一个VC的属性。if语句不起作用,相反,无论选择什么,都会发生相同的操作。
这是一个使用Xcode的Swift的iOS
应用程序。我试图创建一个布尔值作为属性,以便在点击Calculation1时,findCalc1 = true
,然后在下一个VC中访问该布尔值作为属性,但它不起作用。我也试着准备了一个布尔值,作为共同问题的一部分,但也没用。我觉得我对不同风投之间能做什么和不能做什么的理解有差距。
//这是我第一个VC的代码
@IBAction func lightButtonPressed(_ sender: UIButton) {
if sender.tag == 1 && lightViewPromptIndex == 1 {
desiredGpaText = textfield.text!
performSegue(withIdentifier: "goToDarkButtonVC", sender: self)
} else if sender.tag == 2 && lightViewPromptIndex == 1 {
performSegue(withIdentifier: "goToDarkButtonVC", sender: self)
}
//这是我的第二个VC代码
@IBAction func darkButtonPressed(_ sender: Any) {
if aboveTopPromptIndex == 1 && lightViewObject().findCalc1 == true {
aboveTopTextPrompt.text = aboveTopPrompt2
topTextfield.placeholder = "Ex: 76.00"
besideTopTextLabel.isHidden = true
underTopTextLabel.text = "course credits"
aboveBottomTextPrompt.text = "that count toward my GPA."
bottomTextfield.isHidden = true
underBottomTextLabel.isHidden = true
bottomFloatingLabel.isHidden = true
darkButton.setTitle(nextTitle, for: .normal)
aboveTopPromptIndex = 2
} else if aboveTopPromptIndex == 1 && lightViewObject().findCalc1 == false {
performSegue(withIdentifier: "darkViewToABC", sender: TextfieldTwoLightButtonsViewController.self)
共同的问题有
aboveTopPromptIndex == 1
。我想发生的是,如果这个问题被问到并且Calculation1先前被选中,那么if语句中的第一段代码将运行。。。如果需要计算2,则发生else if语句中的segue。相反,无论按下哪个按钮,if语句的第一部分都会发生,而不管先前是否选择了Calculation2。 最佳答案
这个问题是关于将数据从一个视图控制器传递到另一个视图控制器。将数据从一个视图控制器传递到
另一个视图控制器可以使用segue方法
func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) { }
用法:
将扩展添加到第一个视图控制器,即lightViewController
extension lightViewController {
override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {
if (segue.identifier == "goToDarkButtonVC") {
let destVC = segue.destinationViewController as! darkViewController
destVC. findCalc = sender as! Bool
}
}
@IBAction func lightButtonPressed(_ sender: UIButton) {
if sender.tag == 1 && lightViewPromptIndex == 1 {
desiredGpaText = textfield.text!
// In the sender set the value as per your need....
performSegue(withIdentifier: "goToDarkButtonVC", sender: true)
} else if sender.tag == 2 && lightViewPromptIndex == 1 {
// In the sender set the value as per your need....
performSegue(withIdentifier: "goToDarkButtonVC", sender: true)
}
}
}
在第二个视图控制器中,按如下方式访问该值:
class darkViewController : UIViewController {
var findCalc = false
@IBAction func darkButtonPressed(_ sender: Any) {
if aboveTopPromptIndex == 1 && self.findCalc1 == true {
//TODO: add your handling code here....
}
}
所以你可以很容易地达到你的要求。
关于swift - 有没有一种方法可以根据先前是否在另一个 View Controller 上按下了按钮来编写if语句?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54301203/