Middle
Kontrollerning hayot aylari va ular qanday chaqirilishini aytib bering.
sobes.tech AI
AIdan javob
UIViewController ning hayot sikli uning mavjudligining ma'lum lahzalarida chaqiriladigan metodlarni o'z ichiga oladi: yaratishdan tortib, yo'q qilishgacha.
Hayot siklining asosiy metodlari:
-
viewDidLoad():- Kontrolörning ko'rinishi xotirada yuklanganidan so'ng, lekin ekraningizda ko'rsatilishidan oldin chaqiriladi.
- Ma'lumotlarni boshlash, UI elementlarini sozlash uchun ishlatiladi, ular ko'rinishning geometriyasiga bog'liq emas.
- Kontrolörning hayoti davomida faqat bir marta chaqiriladi.
-
viewWillAppear(_ animated: Bool):- Kontrolörning ko'rinishi ekraningizda paydo bo'lishidan oldin darhol chaqiriladi.
- Har safar ko'rinish ko'rinadigan bo'lsa, bajarilishi kerak bo'lgan vazifalarni bajarish uchun ishlatiladi (masalan, ma'lumotlarni yangilash, animatsiyalar).
- Bir nechta marta chaqirilishi mumkin.
-
viewDidAppear(_ animated: Bool):- Kontrolörning ko'rinishi ekraningizda to'liq paydo bo'lgandan so'ng chaqiriladi.
- Animatsiyalarni boshlash yoki ko'rinish to'liq tayyor bo'lishi kerak bo'lgan boshqa vazifalarni bajarish uchun mos keladi.
- Bir nechta marta chaqirilishi mumkin.
-
viewWillDisappear(_ animated: Bool):- Kontrolörning ko'rinishi ekraningizdan olib tashlanishidan oldin darhol chaqiriladi (masalan, boshqa ekran uchun o'tish).
- Holatni saqlash yoki ko'rinish ko'rinmay qolganida bajarilmasligi kerak bo'lgan vazifalarni to'xtatish uchun ishlatiladi (masalan, vaqtni o'lchashni to'xtatish).
- Bir nechta marta chaqirilishi mumkin.
-
viewDidDisappear(_ animated: Bool):- Kontrolörning ko'rinishi ekraningizdan to'liq olib tashlanganidan so'ng chaqiriladi.
- Resurslarni bo'shatish yoki ko'rinish ko'rinmay qolganida kerak bo'lmagan vazifalarni to'xtatish uchun ishlatiladi.
- Bir nechta marta chaqirilishi mumkin.
-
viewWillLayoutSubviews():- Kontrolör o'zining subviewlarini joylashtirishni boshlashdan oldin chaqiriladi.
- Auto-layoutdan oldin constraint yoki frame'larda o'zgarishlar qilish uchun ishlatiladi.
- Bir nechta marta chaqirilishi mumkin.
-
viewDidLayoutSubviews():- Kontrolör o'zining subviewlarini joylashtirishni tugatgandan so'ng chaqiriladi.
- Subviewlarning yakuniy o'lchamlarga bog'liq vazifalarni bajarish uchun ishlatiladi (masalan, skroll indikatorlari yoki soyalash).
- Bir nechta marta chaqirilishi mumkin.
-
didReceiveMemoryWarning():- Kam RAM bo'lsa chaqiriladi.
- Keyinchalik qayta yaratish mumkin bo'lgan resurslarni bo'shatish uchun ishlatiladi.
-
deinit:UIViewControllerobyekti yo'q qilinishidan darhol oldin chaqiriladi.- Yakuniy tozalash uchun ishlatiladi, masalan, kuzatuvchilarni olib tashlash yoki tarmoq ulanishlarini yopish.
Chaqirilish tartibi:
Kontrolörning paydo bo'lishi paytida odatiy chaqirilish tartibi:
viewDidLoad()viewWillAppear(_ animated: Bool)viewWillLayoutSubviews()viewDidLayoutSubviews()viewDidAppear(_ animated: Bool)
Kontrolörning yo'q qilinishi paytida odatiy chaqirilish tartibi:
viewWillDisappear(_ animated: Bool)viewDidDisappear(_ animated: Bool)deinit(agar kontrolör endi kerak bo'lmasa)
Misol uchun amalga oshirish:
import UIKit
class MyViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// UI sozlamalari, ma'lumotlarni boshlash
print("viewDidLoad")
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
// Ko'rinishdan oldin UI yangilash
print("viewWillAppear")
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// Ko'rinish to'liq paydo bo'ldi, animatsiyalarni boshlash
print("viewDidAppear")
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
// Yashirishga tayyorlanish, holatni saqlash
print("viewWillDisappear")
}
override func viewDidDisappear(_ animated: Bool) {
super.viewDidDisappear(animated)
// Yashirish tugadi, tozalash
print("viewDidDisappear")
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
// Auto-layoutdan oldin
print("viewWillLayoutSubviews")
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
// Auto-layoutdan keyin
print("viewDidLayoutSubviews")
}
deinit {
// Resurslarni tozalash
print("deinit")
}
}