Acum ne întoarcem la Storyboard, selectăm ViewControllerC și tragem de la controlerul de vizualizare la proxy-ul Exit.
În fereastra pop-up selectăm metoda noastră de derulare.
În cele din urmă, îi dăm un identificator suitei noastre de desfacere.
Acum tot ce a mai rămas de făcut este să declanșăm segue-ul de derulare atunci când este apăsat butonul nostru.
@IBAction func backToATapped(_ sender: Any) {
performSegue(withIdentifier: "unwindToA", sender: self)
}
Am terminat! 🥂
Câteva detalii tehnice
Înainte de a încheia acest articol vreau să mă uit la ceea ce face runtime-ul sub capotă.
Localizarea destinației este practic o plimbare în sus în ierarhia controlerului de vizualizare. Următorul va fi părintele controlerului de vizualizare curent sau presentingViewController.
La fiecare oprire, timpul de execuție trebuie, de asemenea, să verifice dacă controlerul de vizualizare are copii, deoarece metoda de derulare ar putea fi conținută în unul dintre aceștia. Acest lucru se face prin apelarea metodei allowedChildrenForUnwinding(from:), care returnează o matrice de UIViewControllers care sunt copiii controlerului de vizualizare.
Cu toate acestea, nu dorim să verificăm ramura care conține controlerul de vizualizare sursă, deoarece tocmai am venit de acolo. Acest lucru este evitat prin apelarea metodei childContaining(_:), care returnează controlerul de vizualizare copil care conține sursa secvenței de desfacere. Acesta este eliminat din matrice.
Dacă matricea returnată conține copii, procesul de mai sus se efectuează și asupra acestora. Acesta se încheie dacă se găsește destinația.
Dacă array-ul returnat este gol, se apelează metoda canPerformUnwindSegueAction(_:from:sender:), care verifică dacă controlerul de vizualizare conține metoda unwind.
Dacă da, am ajuns la destinație și procesul este încheiat. Dacă nu, mergem un pas mai sus în ierarhia controlerului de vizualizare și efectuăm aceiași pași.
Concluzie
Sperăm că v-a plăcut acest scurt tutorial despre secvențele unwind, vă mulțumesc că v-ați făcut timp să îl citiți.
.