Контроллеры просмотра панели вкладок в IB:отправить пользовательский init?

StackOverflow https://stackoverflow.com/questions/617973

Вопрос

В моем приложении на основе TabBarController есть несколько вкладок.Каждый из них имеет пользовательский класс ViewController, разница заключается лишь в способе инициализации экземпляра.Есть ли способ заставить interface builder отправлять на разные вкладки пользовательские параметры инициализации?

В настоящее время я выполняю инициализацию в viewWillAppear, но по ряду причин имело бы смысл сделать это в IB, а не в коде.

Есть какие-нибудь предложения?

спасибо, Келсо

Это было полезно?

Решение

Interface Builder создает архив объектов, который разархивируется при выполнении вашей программы.На самом деле вы не можете сказать IB, чтобы он вызывал определенные методы.

Если вам нужно инициализировать перед viewWillAppear: вызывается, вы можете сделать это в awakeFromNib, который гарантированно вызывается после того, как все объекты будут загружены и все розетки будут подключены к своим целям.

Если вы хотите выполнить инициализацию еще раньше, вы можете сделать это, переопределив initWithCoder: (смотрите на NSCoding протокол для документирования).Я не знаю, задокументировано ли это где-нибудь, но это обозначение инициализируется для объектов, декодируемых из архива.

Во всем вышеперечисленном вы не сможете получать параметры, но в коде вы должны иметь возможность получить доступ ко всему, что вам нужно, при разумном использовании глобальных переменных.Вы также можете использовать [[UIApplication sharedApplication] delegate] чтобы получить доступ к объекту делегирования вашего приложения.

Другие советы

Я не думаю, что есть какой-либо способ изменить, какие методы вызываются средой выполнения IB при загрузке вашего nib.Если бы вы описали, чего вы пытались достичь (т.е.почему выполнение настройки в viewDidAppear у вас не работает), вы можете получить предложение о лучшем способе обработки вашей инициализации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top