#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, гарантируется, что все его подключения к выходу и действию уже установлены.