2015-12-17 7 views
1

Я вижу, что, когда вид контроллера загружается из раскадровки, эти события происходят в порядкеЧто такое выходные в awakeFromNib?

  • awakeAfterUsingCoder
  • awakeFromNib
  • viewDidLoad

В awakeFromNib, я вижу, что isViewLoaded == ложь. От Which should I use, -awakeFromNib or -viewDidLoad?

awakeFromNib вызывается, когда сам контроллер разархивирован от кончика пера. viewDidLoad вызывается, когда представление создается/неархивируется. Это различие особенно важно, когда представление контроллера хранится в отдельном файле nib.

В спецификации из awakeFromNib

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

Какой выход и действие это упоминает? Другое дело, что awakeAfterUsingCoder называется 3 раза в моем случае !!!

ответ

0

Это работает только с перьями. Как я понимаю, если мы загружаем ViewControllers из раскадровки, то awakeFromNib вызывается, но перед инициализацией представления и subviews. Вот почему нет никакой гарантии, что представление и выходы будут инициализированы. Поэтому, если вам нужен объект с установленными разъемами выхода и действия, вам нужно запустить awakeFromNib с [self view], это похоже на небольшой трюк, который помогает.