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")
}
}