I ein Projekt mit drei unterschiedlichen Ansicht Controller haben:einen aktualisierten Variablenwert aus einer anderen Ansicht Controller Zugriff
Viewcontroller (dies ist, wo die Benutzereingaben-Werte), LoadingViewController (Ladebildschirm) und AnswerViewController (wo ich will die Ergebnis eines aktualisierten Wert in den ersten view-Controller geladen werden)
Hier ist der Code in Viewcontroller.
var calculatedRatio: Double?
@IBOutlet weak var boysCountTextField: UITextField!
@IBOutlet weak var girlsCountTextField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func calculateButtonTapped(sender: UIButton) {
if boysCountTextField.text != "" && girlsCountTextField.text != "" {
calculateRatio()
self.performSegueWithIdentifier("loadingAnswer", sender: self)
}
}
func calculateRatio() {
let boysCount = Double(boysCountTextField.text!)!
let girlsCount = Double(girlsCountTextField.text!)!
let currentRatio = boysCount/girlsCount
calculatedRatio = currentRatio
print(calculatedRatio)
}
Wie Sie in diesem view-Controller sehen können ich eine Variable an der Spitze erstellt habe 01 genanntdas ist ein optionales Doppel. Und in der gleichen Ansicht Controller, sobald Sie auf eine Schaltfläche drücken, es führt eine Funktion auf der Unterseite namens calculateRatio()
, die den calculatedRatio
Wert aktualisiert.
Meine Frage ist, wie kann ich auf den neuen Wert dieser Variable in einem anderen Ansichtscontroller (AnswerViewController) zugreifen, in den ich nicht direkt segue?
Ich habe bereits versucht, innerhalb von AnswerViewController eine Instanz von ViewController zu erstellen, aber die Variable wird mit ihrem Anfangswert (der in diesem Fall gleich null ist) anstelle des neuen Werts der calculateRatio()
-Funktion kopiert.
Haben Sie versucht, Delegierung zu verwenden? – MikeG