Swift - Segue: Unterschied zwischen den Versionen
| Zeile 50: | Zeile 50: | ||
== Segue mit Navigation Controller == | == Segue mit Navigation Controller == | ||
| + | Mit der obigen Methode öffnen sich die Screens als Modal. Das bedeutet sie legen sich über den Root Screen. Für größere Apps kann man einen Navigation Controller nutzen. Mit diesem kann man eine komfortable Navigation Bar erzeugen, die dem User hilft durch die Screens zu steuern. Inkl. Backbutton wie man es von vielen Apps her kennt. | ||
| + | |||
| + | * Root ViewController auswählen | ||
| + | * Editor > Embed in > Navigation Controller | ||
Version vom 22. Januar 2023, 14:12 Uhr
Segue - Quickstart
- Von einem ViewController mit control zum anderen ziehen (entweder in den Ansichten (gelber Bobbel) oder im Sideview.
- Art auswählen
- Identifier vergeben (Property Panel) z.B. goToResults
Segue Code für den Übergang
Im Start Controller kann man nun den ZielView mit der performSegue Funktion die jeder View enthält aufrufen:
self.performSegue(withIdentifier: "goToResult", sender: self)
Wenn man außerdem im Zielview Properties setzen möchte kann man das mit der prepare Funktion machen. Diese Funktion wird automatisch aufgerufen wenn man performSegue ausführt.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// you should check if it's the right segue
if segue.identifier == "goToResult" {
print(segue.identifier!)
/**
Originally prepare() targets a UIViewController.
But as we created our view we also created a Subclass of UIViewController
Thus we have to tell which subclass our destination is in the override function.
We can do that by using the "as" keyword . This is called DOWNCASTING.
Exclamation mark (!) means it is a forced downcast. Like with Optionals
this expresses our certainty that the target is a ResultViewController
*/
let destinationVC = segue.destination as! ResultViewController
destinationVC.bmiValue = calculatorBrain.getBMIValue()
destinationVC.advice = calculatorBrain.getAdvice()
destinationVC.color = calculatorBrain.getColor()
/**
via the destination we have access to the destinations properties and can set them.
*/
}
}
Zurück zum Hauptlayer
Der neue View liegt wie oben erstellt einfach über dem Mainview. Daher können wir ihn einfach wieder schließen um wieder zum Mainview zu kommen.
@IBAction func recalculatePressed(_ sender: UIButton) {
self.dismiss(animated: true,completion: nil)
}
Buttons öffnet View - The Fast Way
Eine schnelle Möglichkeit einen View über einen Button zu öffnen: Control Drag von einen Button auf einen neuen View. > Art wählen z.B. Show Rechtsklick auf den Button zeigt dir danach die Action die für den Button angelegt wurde.
Mit der obigen Methode öffnen sich die Screens als Modal. Das bedeutet sie legen sich über den Root Screen. Für größere Apps kann man einen Navigation Controller nutzen. Mit diesem kann man eine komfortable Navigation Bar erzeugen, die dem User hilft durch die Screens zu steuern. Inkl. Backbutton wie man es von vielen Apps her kennt.
- Root ViewController auswählen
- Editor > Embed in > Navigation Controller