Most visszamegyünk a Storyboardra, kiválasztjuk a ViewControllerC-t, és a nézetvezérlőből áthúzzuk a Kilépési proxyra.

Húzás az Exit proxyra

A felugró ablakban kiválasztjuk az unwind módszerünket.

A feloldási módszer kiválasztása

Végül adjunk azonosítót a feloldási segédünknek.

Az unwind segue most már rendelkezik egy azonosítóval és kapcsolódik az unwind metódushoz.

Már csak annyi van hátra, hogy a gombunk megnyomásakor elindítsuk az unwind segue-t.

@IBAction func backToATapped(_ sender: Any) {
performSegue(withIdentifier: "unwindToA", sender: self)
}

Készen vagyunk! 🥂

Unwind segue

Néhány technikai részlet

A cikk lezárása előtt szeretném megnézni, mit csinál a futásidő a motorháztető alatt.

A célállomás megtalálása alapvetően egy séta a nézetvezérlő hierarchiában. Az aktuális nézetvezérlő szülője vagy bemutatóViewController lesz a következő.

A futásidőnek minden egyes megállásnál azt is ellenőriznie kell, hogy a nézetvezérlőnek vannak-e gyermekei, mert a feloldási metódus ezek egyikében lehet, hogy benne van. Ez az allowedChildrenForUnwinding(from:) metódus meghívásával történik, amely visszaadja azon UIViewControllerek tömbjét, amelyek a nézetvezérlő gyermekei.

Az ágat azonban, amely a forrás nézetvezérlőt tartalmazza, nem akarjuk ellenőrizni, hiszen éppen onnan jöttünk. Ezt elkerülhetjük a childContaining(_:) metódus meghívásával, amely visszaadja azt a gyermek nézetvezérlőt, amely tartalmazza a feloldási segue forrását. Ezt eltávolítjuk a tömbből.

Ha a visszaadott tömb tartalmaz gyermekeket, a fenti folyamatot azokon is elvégezzük. Ez akkor ér véget, ha megtaláltuk a célt.

Ha a visszaadott tömb üres, akkor a canPerformUnwindSegueAction(_:from:sender:) metódust hívjuk meg, amely ellenőrzi, hogy a nézetvezérlő tartalmazza-e az unwind metódust.

Ha igen, akkor elértük a célt és a folyamat befejeződött. Ha nem, akkor egy lépéssel feljebb megyünk a nézetvezérlő hierarchiában, és ugyanazokat a lépéseket hajtjuk végre.

Következtetés

Remélem, tetszett ez a rövid bemutató az unwind seguesről, köszönjük, hogy időt szánt az elolvasására.

Articles

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.