Sobes.tech
Middle

Баскаруучунун өмүр цикли жана аларды кандайча чакырууга болорун айтып бер.

sobes.tech AI

AIден жооп

UIViewControllerтин өмүрүнүн цикли анын белгилүү учурларында чакырылган ыкмаларды камтыйт: түзүүдөн алып жок кылууга чейин.

Негизги өмүрүнүн циклинин ыкмалары:

  1. viewDidLoad():

    • Контроллердин көрүнүшү эс тутумга жүктөлгөндөн кийин, бирок экранда көрсөтүлбөстөн чакырылат.
    • Маалыматтарды баштапкы конфигурациялоо жана UI элементтерин орнотуу үчүн колдонулат, алар геометрияга көз каранды эмес.
    • Өмүрүнүн ичинде бир гана жолу чакырылат.
  2. viewWillAppear(_ animated: Bool):

    • Контроллердин көрүнүшү экранда пайда болор алдында түздөн-түз чакырылат.
    • Ар бир көрүнүш көрүнгөндө жасалышы керек болгон иштер үчүн колдонулат (мисалы, маалыматтарды жаңылоо, анимациялар).
    • Көп жолу чакырылышы мүмкүн.
  3. viewDidAppear(_ animated: Bool):

    • Контроллердин көрүнүшү толугу менен пайда болуп, колдонуучу үчүн көрүнүп турганда чакырылат.
    • Анимацияларды баштоо же башка иш-аракеттер үчүн ылайыктуу, көрүнүш толук даяр болушу керек.
    • Көп жолу чакырылышы мүмкүн.
  4. viewWillDisappear(_ animated: Bool):

    • Контроллердин көрүнүшү экрандан кетер алдында түздөн-түз чакырылат (мисалы, башка экранга өтүүдө).
    • Абалын сактоо же көрүнбөгөндө аткарылбашы керек болгон иштерди токтотуу үчүн колдонулат (мисалы, таймерлерди токтотуу).
    • Көп жолу чакырылышы мүмкүн.
  5. viewDidDisappear(_ animated: Bool):

    • Контроллердин көрүнүшү толугу менен экрандан алынып салынгандан кийин чакырылат.
    • Ресурстарды бошотуу же керек эмес иштерди токтотуу үчүн колдонулат, көрүнбөгөндө.
    • Көп жолу чакырылышы мүмкүн.
  6. viewWillLayoutSubviews():

    • Подвиддердин жайгашуусун баштар алдында чакырылат.
    • Авто-өлчөмдөөнү аткаруудан мурун чектөөлөрдү же фреймдерди өзгөртүү үчүн колдонулат.
    • Көп жолу чакырылышы мүмкүн.
  7. viewDidLayoutSubviews():

    • Контроллердин подвиддери жайгаштырылган соң чакырылат.
    • Аягында өлчөмдөргө байланыштуу иш-аракеттерди аткаруу үчүн (мисалы, скролл-индикаторлорду же көлөкөлөрдү орнотуу).
    • Көп жолу чакырылышы мүмкүн.
  8. didReceiveMemoryWarning():

    • Жөндөмдүүлүк азайганда чакырылат.
    • Кийинкиде кайра түзүлө турган ресурстарды бошотуу үчүн колдонулат.
  9. deinit:

    • UIViewController объектисин жок кылуудан жана эс тутумдан чыгаруудан алдын чакырылат.
    • Аягында тазалоо иштерин жүргүзүү үчүн колдонулат, мисалы, байкоочуларды алып салуу же тармактык байланыштарды жабуу.

Чакырылуу тартиби:

Контроллер көрүнгөндө методдордун типтүү тартиби:

  1. viewDidLoad()
  2. viewWillAppear(_ animated: Bool)
  3. viewWillLayoutSubviews()
  4. viewDidLayoutSubviews()
  5. viewDidAppear(_ animated: Bool)

Контроллер жоголгондо:

  1. viewWillDisappear(_ animated: Bool)
  2. viewDidDisappear(_ animated: Bool)
  3. 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")
    }
}