У меня есть несколько сложное представление, которое я собрал в отдельный проект (шаблон на основе представления) (View Controller был представлен оранжевым значком в MainWindow.xib). Уже достаточно далеко, и я решил перенести его в другой проект, где он будет управляться навигационным контроллером. Он вызывается из довольно простого UINavigationController pushViewController: animated: метод.
MyViewController имеет соответствующий nib-файл (возможно, некоторые из моих заблуждений заключаются в том, что класс & nib почти одинаково назван, с разными суффиксами .m, .h, & .xib) . Когда это было начальное представление при запуске в начальном проекте, при создании его экземпляра вызывались бы и awakeFromNib и initWithCoder . Теперь только viewDidLoad , кажется, вызывается.
Я запутался в том, что / почему такая разница?!? Я нашел некоторые другие темы на S.O. которые связаны, но они все еще оставляют меня почесывать голову с ответами вроде: "awakeFromNib вызывается, когда сам контроллер разархивируется из пера. viewDidLoad вызывается, когда представление создается / разархивируется. Это различие особенно важно, когда представление контроллера хранится в отдельном файле пера. "
Различие, по-видимому, зависит от того, что именно разархивируется в представлении или
ViewController. Так что, если ViewController создается и выдвигается, тогда я должен только ожидать, что будет вызван viewDidLoad? и с другой стороны, если мой ViewController имеет IBOutlet (и объектный объектный объект, представляющий его, который был перетащен в мое перо), то я могу ожидать, что initWithCoder и awakeFromNib будут вызваны оба?
Может кто-нибудь помочь мне разобраться? Похоже, что более трудно повторно использовать эти представления / контроллеры, если различные методы произвольно вызываются в очень специфических обстоятельствах ... или, как, конечно, имеет место, это именно , почему они вызываются, скорее, очень специфические обстоятельства ... я просто еще не до конца понимаю разграничение между различными методами.
Кто-нибудь хочет помочь мне разобраться?