Middle
Պատմեք վերահսկողի կյանքի ցիկլերի մասին և ինչպես են նրանք կանչվում։
sobes.tech AI
Պատասխան AI-ից
UIViewController-ի կյանքի ցիկլը ներառում է մեթոդներ, որոնք կանչվում են նրա գոյության որոշակի պահերին՝ ստեղծումից մինչև ոչնչացում։
Հիմնական կյանքի ցիկլի մեթոդներ:
-
viewDidLoad():- Կանչվում է այն ժամանակ, երբ վերահսկողի տեսքը բեռնում է հիշողություն, բայց դեռ չի ցուցադրվում էկրանին։
- Օգտագործվում է տվյալների սկզբնական կարգավորումների և UI տարրերի կազմաձևման համար, որոնք կախված չեն տեսքի գեոմետրից։
- Կանչվում է միայն մեկ անգամ ողջ կյանքի ընթացքում։
-
viewWillAppear(_ animated: Bool):- Կանչվում է անմիջապես առաջ, քան տեսքը հայտնվում է էկրանին։
- Օգտագործվում է այն գործառույթների համար, որոնք պետք է կատարվեն ամեն անգամ, երբ տեսքը դառնում է տեսանելի (օրինակ՝ տվյալների թարմացում, անիմացիաներ)։
- Կարող է կանչվել մի քանի անգամ։
-
viewDidAppear(_ animated: Bool):- Կանչվում է այն ժամանակ, երբ տեսքը ամբողջությամբ հայտնվում է էկրանին և դառնում է օգտագործողի համար տեսանելի։
- Հարմար է անիմացիաներ կամ այլ գործառույթներ սկսելու համար, որոնք պահանջում են, որ տեսքը ամբողջությամբ պատրաստ լինի։
- Կարող է կանչվել մի քանի անգամ։
-
viewWillDisappear(_ animated: Bool):- Կանչվում է անմիջապես առաջ, քան տեսքը հեռացվի էկրանից (օրինակ՝ անցում մյուս էկրանին)։
- Օգտագործվում է վիճակի պահպանման կամ գործառույթների դադարեցման համար, որոնք չպետք է կատարվեն, երբ տեսքը անտեսանելի է (օրինակ՝ ժամանակաչափերի դադարեցում)։
- Կարող է կանչվել մի քանի անգամ։
-
viewDidDisappear(_ animated: Bool):- Կանչվում է այն ժամանակ, երբ տեսքը ամբողջությամբ հեռացվել է էկրանից։
- Օգտագործվում է ռեսուրսների ազատման կամ գործառույթների դադարեցման համար, որոնք անհրաժեշտ չեն, երբ տեսքը անտեսանելի է։
- Կարող է կանչվել մի քանի անգամ։
-
viewWillLayoutSubviews():- Կանչվում է նախքան ենթատեսակների դասավորությունը սկսելը։
- Օգտագործվում է փոփոխություններ մտցնելու համար սահմանափակումներում կամ ֆրեյմերում՝ ավտոմատ դասավորությունից առաջ։
- Կարող է կանչվել մի քանի անգամ։
-
viewDidLayoutSubviews():- Կանչվում է այն ժամանակ, երբ վերահսկողիչը ավարտում է ենթատեսակների դասավորությունը։
- Օգտագործվում է վերջնական չափերի վրա հիմնված գործառույթներ կատարելու համար (օրինակ՝ սքրոլի ինդիկատորների կամ ստվերների կարգավորումը)։
- Կարող է կանչվել մի քանի անգամ։
-
didReceiveMemoryWarning():- Կանչվում է ցածր հիշողության մակարդակին։
- Օգտագործվում է ռեսուրսների ազատման համար, որոնք կարող են հետագայում վերականգնվել։
-
deinit:- Կանչվում է անմիջապես առաջ, քան
UIViewControllerօբյեկտը ոչնչացվի և ազատվի հիշողությունից։ - Օգտագործվում է վերջնական մաքրման համար, օրինակ՝ դիտորդների հեռացման կամ ցանցային կապերի փակման համար։
- Կանչվում է անմիջապես առաջ, քան
Կոչման կարգը:
Տիպիկ կարգը մեթոդների կանչման՝ երբ վերահսկողիչը հայտնվում է՝
viewDidLoad()viewWillAppear(_ animated: Bool)viewWillLayoutSubviews()viewDidLayoutSubviews()viewDidAppear(_ animated: Bool)
Երբ վերահսկողիչը անհետանում է՝
viewWillDisappear(_ animated: Bool)viewDidDisappear(_ animated: Bool)deinit(եթե վերահսկողիչը այլևս անհրաժեշտ չէ)
Իմպլեմենտացիայի օրինակ:
import UIKit
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// UI կարգավորում, տվյալների սկզբնական բեռնում
print("viewDidLoad")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// UI թարմացում առաջ գալուց
print("viewWillAppear")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// Գործարկում անիմացիաներ կամ այլ գործողություններ
print("viewDidAppear")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Պատրաստում անհետանալու, վիճակի պահպանման
print("viewWillDisappear")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// Անհետանալուց հետո, մաքրման աշխատանքներ
print("viewDidDisappear")
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
// Մինչ ավտո-կարգավորումը
print("viewWillLayoutSubviews")
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// Ավտո-կարգավորումից հետո
print("viewDidLayoutSubviews")
}
deinit {
// Ռեսուրսների մաքրում
print("deinit")
}
}