NSNotification вызывается после viewDidLoad следующего контроллера

#swift #nsnotificationcenter #viewdidload #viewdidappear

#swift #nsnotificationcenter #viewdidload #viewdidappear

Вопрос:

У меня есть страница целевого меню с двумя кнопками.

После того, как пользователь нажимает на один из них, появляется сообщение Notification к следующему экрану.
Notification Указывает на метод, который я ожидаю загрузить раньше viewDidload .

Однако viewDidload в следующем контроллере выполняется перед функцией уведомления.
Только если я включу свой код в `viewDidAppear’, я смогу заставить его работать.
Однако я не хочу вызывать его каждый раз, когда появляется представление.

Ответ №1:

Если вы ссылаетесь на ViewController view в своем методе или до отправки уведомления, ViewController view будет создан и будет вызван viewDidLoad метод.

Ответ №2:

Я бы вызвал метод, на который указывает уведомление, из viewDidLoad вместо того, чтобы вызывать его напрямую. Это может сработать… Если загрузка этого VC связана с событием уведомления.

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

Кроме того, проверьте awakeFromNib: метод.

Инфраструктура загрузки nib отправляет сообщение awakeFromNib каждому объекту, воссозданному из архива nib, но только после того, как все объекты в архиве были загружены и инициализированы. Когда объект получает сообщение awakeFromNib, гарантируется, что все его подключения к выходу и действию уже установлены.