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)
// Көрүнүш алдын жаңылоо
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")
}
}