Nu gaan we terug naar het Storyboard, selecteren ViewControllerC en slepen van de view controller naar de Exit proxy.
In de popup selecteren we onze afwikkel methode.
Ten slotte geven we onze afwikkel segue een identifier.
Nu hoeven we alleen nog maar de afwikkelsegmente te triggeren wanneer onze knop wordt ingedrukt.
@IBAction func backToATapped(_ sender: Any) {
performSegue(withIdentifier: "unwindToA", sender: self)
}
We zijn klaar! 🥂
Enkele technische details
Voordat ik dit artikel afsluit, wil ik kijken naar wat de runtime onder de motorkap doet.
Het lokaliseren van de bestemming is in principe een wandeling omhoog in de view controller hiërarchie. De huidige view controller’s ouder of presentingViewController zal de volgende zijn.
Bij elke stop moet de runtime ook controleren of de view controller kinderen heeft, omdat de afwikkel methode misschien in een van die kinderen zit. Dit wordt gedaan door de methode allowedChildrenForUnwinding(from:) aan te roepen, die een array van UIViewControllers retourneert die de kinderen van de view controller zijn.
We willen echter niet de tak controleren die de bron view controller bevat, omdat we daar net vandaan komen. Dat wordt vermeden door de childContaining(_:) methode aan te roepen, die het kind view controller retourneert dat de bron van de afwikkel segue bevat. Deze wordt verwijderd uit de array.
Als de geretourneerde array kinderen bevat, wordt het bovenstaande proces ook op hen uitgevoerd. Het eindigt als de bestemming is gevonden.
Als de geretourneerde array leeg is, wordt de methode canPerformUnwindSegueAction(_:from:sender:) aangeroepen, die controleert of de view controller de afwikkelmethode bevat.
Als dat het geval is, hebben we onze bestemming bereikt en is het proces voltooid. Als dat niet het geval is, gaan we een stap hoger in de view controller hiërarchie en voeren we dezelfde stappen uit.
Conclusie
Ik hoop dat je genoten hebt van deze korte tutorial over unwind segues, bedankt dat je de tijd hebt genomen om het te lezen.