When I am selecting Target 2 in picker view all working good, the labels text on the next view controller are updating, all ok. But if I will select Target 1 - opening next ViewController without any errors but labels text is empty nil.
I will appreciate if you help me or sudgest other way. I am simply using if else statement to check textField.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let resultsVC = segue.destination as! ResultsViewController
var declinationDegr = Int()
if (bodyTextField.text?.contains("Target 1"))! {
declinationDegr = declinationDegreeTarget1
} else if (bodyTextField.text?.contains("Target 2"))! {
declinationDegr = declinationDegreeTarget2
}
var declinationMinutes = Double()
if (bodyTextField.text?.contains("Target 1"))! {
declinationMinutes = declinationMinutesTarget1
} else if (bodyTextField.text?.contains("Target 2"))! {
declinationMinutes = declinationMinutesTarget2
}
var declinationDir = String()
if (bodyTextField.text?.contains("Target 1"))! {
declinationDir = declinationDirTarget1
} else if (bodyTextField.text?.contains("Target 2"))! {
declinationDir = declinationDirTarget2
resultsVC.bdeclString = "\(declinationDegr)º\(String(format: "%.1f", declinationMinutes))'\(declinationDir)"
}
First, I think you are missing the closing curly braces of the last if/else statement.
var declinationDir = String()
if (bodyTextField.text?.contains("Target 1"))! {
declinationDir = declinationDirTarget1
} else if (bodyTextField.text?.contains("Target 2"))! {
declinationDir = declinationDirTarget2
} // CLOSING BRACE MISSING
resultsVC.bdeclString = "\(declinationDegr)º\(String(format: "%.1f", declinationMinutes))'\(declinationDir)"
Second, I would re-organize the code a litte, to avoid unnecessary string comparison and forced unwrapping:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let resultsVC = segue.destination as? ResultsViewController else {
// error handling and
return
}
guard let targetText = bodyTextField.text else {
// error handling and
return
}
var declinationDegr = Int()
var declinationMinutes = Double()
var declinationDir = String()
if (targetText.contains("Target 1")) {
declinationDegr = declinationDegreeTarget1
declinationMinutes = declinationMinutesTarget1
declinationDir = declinationDirTarget1
} else if (targetText.contains("Target 2")) {
declinationDegr = declinationDegreeTarget2
declinationMinutes = declinationMinutesTarget2
declinationDir = declinationDirTarget2
} else {
// error handling
}
resultsVC.bdeclString = "\(declinationDegr)º\(String(format: "%.1f", declinationMinutes))'\(declinationDir)"
}