Middle
Mesélj a Vue vezérlő életciklusáról.
sobes.tech MI
Válasz az MI-től
Az iOS-ben a UIViewController típusú vezérlő életciklusa egy eseménysorozatot jelent, amely a létrehozásától a megsemmisítéséig tart. A főbb szakaszok:
- Inicializálás:
init?(coder aDecoder: NSCoder): Storyboard/Nib-ből történő inicializálás.init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?): Nib fájlből vagy programozottan inicializálás Nib nélkül.loadView(): A vezérlő gyökérnézetének betöltése vagy létrehozása. Ha Storyboard/Nib-et használunk, automatikusan hívódik. Programozott nézet esetén felül kell írni.
- Nézet betöltése:
viewDidLoad(): A vezérlő nézetének memóriába töltése után hívódik meg. Olyan inicializáló beállításokra alkalmas, amelyek nem igényelnek geometriai hozzáférést.
- Nézet megjelenése:
viewWillAppear(_ animated: Bool): Pontosan akkor hívódik meg, mielőtt a nézet láthatóvá válik. Az adatok frissítésére alkalmas.viewDidAppear(_ animated: Bool): A nézet láthatóvá válása után hívódik meg. Animációk indítására vagy más feladatokra, amelyek csak a teljes megjelenítés után futnak.
- Nézet eltűnése:
viewWillDisappear(_ animated: Bool): Pontosan akkor hívódik meg, mielőtt a nézet láthatatlanná válik. Állapot mentésére vagy aktivitások leállítására alkalmas.viewDidDisappear(_ animated: Bool): A nézet láthatatlanná válása után hívódik meg. Erőforrások felszabadítására vagy háttérfolyamatok leállítására alkalmas.
- Elrendezés változásai:
viewWillLayoutSubviews(): A vezérlő nézeteinek méretei változás előtt hívódik meg.viewDidLayoutSubviews(): A nézetek méretei változás után hívódik meg. Az elemek végső méret- és pozícióbeállítására alkalmas.
- Trait Collection változásai:
traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?): Környezet jellemzőinek változásakor hívódik meg.
- Memória felszabadítása:
deinit: Pontosan akkor hívódik meg, mielőtt az objektum a memóriából felszabadulna. Erőforrások tisztítására, értesítésekről való leiratkozásra stb.
Fontos pontok:
- A
loadView,viewDidLoad,viewDidAppear,viewWillDisappear,viewDidDisappear,deinitmetódusok egyszer hívódnak az objektum életciklusa során. - A
viewWillAppearésviewDidAppearmetódusok többször is meghívódhatnak, például navigáció során előre és hátra.
Példa hívási sorrendre:
// Inicializálás (ha Storyboard/Nib-ből)
init?(coder aDecoder: NSCoder)
// Vagy inicializálás (ha programozott)
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)
// Nézet betöltése
loadView()
viewDidLoad()
// Nézet megjelenítése
viewWillAppear(true)
// ... a nézet láthatóvá vált ...
viewDidAppear(true)
// Nézet eltűnése (pl. másik VC-re váltáskor)
viewWillDisappear(true)
// ... a nézet láthatatlanná vált ...
viewDidDisappear(true)
// Memória felszabadítása (amikor már nincs erős hivatkozás a vezérlőre)
deinit