Nu går vi tilbage til Storyboardet, vælger ViewControllerC og trækker fra viewcontrolleren til Exit-proxyen.
I popuppen vælger vi vores unwind-metode.
Slutteligt giver vi vores afviklings segue en identifikator.
Nu mangler vi bare at udløse unwind-seguen, når der trykkes på vores knap.
@IBAction func backToATapped(_ sender: Any) {
performSegue(withIdentifier: "unwindToA", sender: self)
}
Vi er færdige! 🥂
Nogle tekniske detaljer
Hvor vi afslutter denne artikel, vil jeg gerne se på, hvad runtime gør under motorhjelmen.
Lokalisering af destinationen er grundlæggende en tur op i view controller-hierarkiet. Den aktuelle visningscontrollers forælder eller presentingViewController vil være den næste.
På hvert stop skal køretiden også kontrollere, om visningscontrolleren har nogen børn, fordi afviklingsmetoden kan være indeholdt i en af disse. Dette gøres ved at kalde metoden allowedChildrenForUnwinding(from:), som returnerer et array af UIViewControllers, som er viewcontrollerens børn.
Men vi ønsker dog ikke at kontrollere den gren, der indeholder kildeviewcontrolleren, da vi lige er kommet derfra. Det undgås ved at kalde metoden childContaining(_:), som returnerer den underordnede visningscontroller, der indeholder kilden til afviklingsseguen. Denne fjernes fra arrayet.
Hvis det returnerede array indeholder nogen børn, udføres ovenstående proces også på dem. Den afsluttes, hvis destinationen er fundet.
Hvis det returnerede array er tomt, kaldes metoden canPerformUnwindSegueAction(_:from:sender:), som kontrollerer, om visningscontrolleren indeholder afviklingsmetoden.
Hvis den gør, har vi nået vores destination, og processen er afsluttet. Hvis den ikke gør, går vi et trin op i visionscontroller-hierarkiet og udfører de samme trin.
Slutning
Jeg håber, at du nød denne korte tutorial om unwind-segues, tak fordi du tog dig tid til at læse den.