Sobes.tech
Middle

Vue nazoratchisining hayot tsiklini haqida gapir.

sobes.tech AI

AIdan javob

iOS'da UIViewController ko'rinishini boshqaruvchi hayot aylanishi, uning yaratilishidan boshlab yo'q qilinishigacha bo'lgan voqealar ketma-ketligini ifodalaydi. Asosiy bosqichlar:

  1. Boshlash:
    • init?(coder aDecoder: NSCoder): Storyboard/Nib'dan boshlash.
    • init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?): Nib faylidan yoki dasturiy ravishda Nibsiz boshlash.
    • loadView(): Kontrolchining asosiy ko'rinishini yuklash yoki yaratish. Agar Storyboard/Nib ishlatilsa, avtomatik chaqiriladi. Dasturiy ravishda yaratish uchun ustiga yozilishi kerak.
  2. Ko'rinishni yuklash:
    • viewDidLoad(): Kontrolchining ko'rinishi xotiraga yuklangandan so'ng chaqiriladi. Geometriyaga kirish talab qilmaydigan boshlang'ich sozlamalar uchun mos.
  3. Ko'rinishning paydo bo'lishi:
    • viewWillAppear(_ animated: Bool): Kontrolchining ko'rinishi ko'rinadigan bo'lishidan oldin chaqiriladi. Ma'lumotlarni yangilash uchun mos, ular o'zgarishi mumkin.
    • viewDidAppear(_ animated: Bool): Kontrolchining ko'rinishi ko'rinadigan bo'lsa, chaqiriladi. Animatsiyalarni boshlash yoki faqat to'liq ko'rsatgandan keyin bajarilishi kerak bo'lgan boshqa vazifalar uchun mos.
  4. Ko'rinishning yo'qolishi:
    • viewWillDisappear(_ animated: Bool): Kontrolchining ko'rinishi yo'q bo'lishidan oldin chaqiriladi. Holatni saqlash yoki faoliyatni to'xtatish uchun mos.
    • viewDidDisappear(_ animated: Bool): Ko'rinish yo'q bo'lgandan so'ng chaqiriladi. Resurslarni bo'shatish yoki fon rejimida kerak bo'lmagan jarayonlarni to'xtatish uchun mos.
  5. Maket o'zgarishlari:
    • viewWillLayoutSubviews(): Kontrolchining ko'rinishlari o'lchamini o'zgartirishdan oldin chaqiriladi.
    • viewDidLayoutSubviews(): Kontrolchining ko'rinishlari o'zgartirilgandan so'ng chaqiriladi. Elementlarning o'lchamlari va pozitsiyalarini yakuniy sozlash uchun mos.
  6. Trait Collection o'zgarishlari:
    • traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?): Muhit xususiyatlari, masalan, sinf o'lchami, ekran zichligi, yorqin/tungi rejim va boshqalar o'zgarganda chaqiriladi.
  7. Xotira bo'shatish (Deinitialization):
    • deinit: Ob'ekt xotiradan chiqarilishidan oldin chaqiriladi. Resurslarni tozalash, bildirishnomalardan voz kechish va boshqalar uchun ishlatiladi.

Muhim nuqtalar:

  • loadView, viewDidLoad, viewDidAppear, viewWillDisappear, viewDidDisappear, deinit metodlari hayot aylanishida faqat bir marta chaqiriladi.
  • viewWillAppear va viewDidAppear metodlari bir nechta chaqirilishi mumkin, masalan, oldinga va orqaga navigatsiya qilishda.

Kontrolchining yaratilishi va ko'rsatilishi davomida chaqirilish ketma-ketligining misoli:

// Boshlash (Agar Storyboard/Nib'dan bo'lsa)
init?(coder aDecoder: NSCoder)

// Yoki boshlash (Agar dasturiy bo'lsa)
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)

// Ko'rinishni yuklash
loadView()
viewDidLoad()

// Ko'rinishning paydo bo'lishi
viewWillAppear(true)
// ... ko'rinish ko'rinadi ...
viewDidAppear(true)

// Ko'rinishning yo'qolishi (masalan, boshqa VC ga o'tishda)
viewWillDisappear(true)
// ... ko'rinish ko'rinmay qoldi ...
viewDidDisappear(true)

// Xotira bo'shatish (kontrolchga endi kuchli havolalar bo'lmaganda)
deinit