Разница между viewDidLoad и viewDidAppear

В чем разница между viewDidLoad и viewDidAppear? Какая инициализация или пользовательский код входят в эти функции?

например. presentModalViewController работает только тогда, когда присутствует в viewDidAppear, а не на viewDidLoad.

Ответ 1

viewDidLoad вызывается ровно один раз, когда контроллер представления сначала загружается в память. Здесь вы хотите создать экземпляр любых переменных экземпляра и построить любые представления, которые живут на протяжении всего жизненного цикла этого контроллера представлений. Тем не менее, представление, как правило, пока не видно на данный момент.

viewDidAppear вызывается, когда представление фактически видимо и может быть вызвано несколько раз в течение жизненного цикла контроллера View (например, когда Modal View Controller уволен и представление становится видимым снова). Здесь вы хотите выполнить любые действия макета или сделать какой-либо чертеж в пользовательском интерфейсе - например, представив контроллер модального представления. Однако все, что вы здесь делаете, должно повторяться. Лучше не хранить здесь вещи, иначе вы получите утечку памяти, если вы не отпустите их, когда представление исчезнет.

Смотрите: https://developer.apple.com/documentation/uikit/uiviewcontroller

Ответ 2

Проще говоря, вы хотели бы создать любые элементы управления или массивы в viewDidLoad, где, как и в viewDidAppear, вы хотите обновить эти элементы управления или массивы.

viewDidLoad вызывается один раз при создании контроллера и viewDidAppear вызывается каждый раз, когда вид, ну, появляется DID. Итак, скажите, что у вас есть модальное представление, которое вы представляете, когда это представление отклонено, будет вызываться viewDidAppear, а viewDidLoad не будет вызываться.