Menemme nyt takaisin Storyboardiin, valitsemme ViewControllerC:n ja vedämme näkymäohjaimesta Exit-proxyn.

Vetämällä Exit proxyyn

Ponnahdusikkunassa valitsemme unwind-metodimme.

Poistomenetelmän valitseminen

Viimeiseksi annamme poistosegueellemme tunnuksen.

Dunwind seguella on nyt tunniste ja se on kytketty unwind-metodiin.

Nyt ei ole enää muuta jäljellä kuin unwind segun laukaiseminen, kun painikettamme painetaan.

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

Valmis! 🥂

Unwind segue

Joitakin teknisiä yksityiskohtia

Ennen tämän artikkelin päättämistä haluan tarkastella, mitä ajoaika tekee konepellin alla.

Kohteen paikantaminen on pohjimmiltaan kävelymatka ylöspäin näkymäohjaimen hallitsijan hierarkiassa. Nykyisen näkymäohjaimen vanhempi eli presentingViewController on seuraava.

Kullakin pysähdyspaikalla runtimen on myös tarkistettava, onko näkymäohjaimella lapsia, koska unwind-metodi saattaa sisältyä johonkin niistä. Tämä tapahtuu kutsumalla allowChildrenForUnwinding(from:)-metodia, joka palauttaa joukon UIViewControllereja, jotka ovat näkymäohjaimen lapsia.

Me emme kuitenkaan halua tarkistaa haaraa, joka sisältää lähteenä olevan näkymäohjaimen, koska tulimme juuri sieltä. Tämä vältetään kutsumalla childContaining(_:)-metodia, joka palauttaa sen lapsinäkökulmaohjaimen, joka sisältää unwind seguen lähteen. Tämä poistetaan matriisista.

Jos palautettu matriisi sisältää lapsia, myös niille suoritetaan edellä mainittu prosessi. Se päättyy, jos määränpää löytyy.

Jos palautettu array on tyhjä, kutsutaan metodia canPerformUnwindSegueAction(_:from:sender:), joka tarkistaa, sisältääkö näkymäohjain unwind-metodin.

Jos sisältää, määränpää on saavutettu ja prosessi on valmis. Jos ei ole, menemme askeleen ylöspäin näkymäohjaimen hierarkiassa ja suoritamme samat vaiheet.

Conclusion

Toivottavasti nautit tästä lyhyestä unwind segues -oppaasta, kiitos kun käytit aikaa sen lukemiseen.

Articles

Vastaa

Sähköpostiosoitettasi ei julkaista.