I am working on a BMI calculator as part of a wider app.
The idea is that the user calculates the BMI then goes to another screen where they find the BMI chart to compare their result.
The idea I have is that the calculated BMI result on the BMI screen is also displayed on the chart screen as a reminder of the score.
I have been attempting to transfer the calculated score (displayed on the calculation screen as a UILabel) across a segue and display it in another UILabel at the top of the screen.
I have been attempting to use the "prepare(for segue)" and "performSegue" commands but can't seem to get the data to transfer across.
I am very new to coding and no doubt I am doing something stupid, but if anyone can help me figure this out, I would be really grateful.
I have linked the screen via the "Active Segue" and have identified the Segue as "bmiSeg. The calculation view controller is named "BMICalc" and the chart view controller named "BMI_Result"
The UILabel on BMICalc is labelled bmiScoreLabel with a var called bmiResult used to collect the score. The UILabel on BMI_Result is labelled bmiResultLabel with a var called bmiScore.
The goBMIButton takes the user to the chart screen.
Hope all that makes sense!
My current coding for the transfer is as follows:
@IBAction func goBMIButton(_ sender: UIButton) {
let generator = UINotificationFeedbackGenerator()
generator.notificationOccurred(.success)
performSegue(withIdentifier: "bmiSeg", sender: self)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "bmiSeg" {
let destinationVC = segue.destination as? BMI_Result
destinationVC?.bmiScore = Int(bmiResult)
}
}
On the second screen the target is simply the UILabel:
I have asked the data transfer to go into var bmiScore and then from there into the UILabel as follows:
bmiResultLabel.text = " (bmiScore)"
Hopefully that description of my thinking isn't too confusing and my apologies if it is!
Thanks everyone!!
On the second screen
DidSet is here to set the title of label whenever the bmiscore interrupted or get new value