Swift - Segue

Aus Wikizone
Version vom 22. Januar 2023, 14:01 Uhr von 134.3.86.14 (Diskussion) (Die Seite wurde neu angelegt: „ == Segue - Quickstart == * Von einem ViewController mit control zum anderen ziehen (entweder in den Ansichten (gelber Bobbel) oder im Sideview. * Art auswähl…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

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. Rechtsklick auf den Button zeigt dir danach die Action die für den Button angelegt wurde.

Segue mit Navigationbar