2013-06-16 2 views
1

Я хочу внести изменения в UINavigationBar Недвижимость программно. - viewDidLoad: или -initWithNibName: - лучшее место для этого и почему?Лучшее место для изменения собственности UINavigationBar?

+1

программно означает везде, где вы можете его изменить –

+0

Я знаю это, но я спросил, что является лучшим местом. –

+0

Какие свойства? Что создает и владеет навигационной панелью? – Wain

ответ

2

– viewDidLoad - идеальная функция для выполнения таких изменений.

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

Я бы не предложил делать такие изменения в – viewWillAppear: или – viewDidAppear:, поскольку они будут вызываться каждый раз, когда появляется представление. Это было бы полезно, если бы вы хотели изменить свойства панели навигации каждый раз, когда она появляется. Я думаю, что ситуация крайне маловероятна и поэтому предлагает – viewDidLoad, поскольку она будет называться только один раз.

-initWithNibName: создаст экземпляр вашего контроллера из файла nib. Вы можете выполнять операции, о которых вы упомянули в этой функции, но есть вероятность, что она может иногда звучать странно, поскольку она может быть не в правильном состоянии. Даже Apple Docs предлагает "If you want to perform additional initialization after the nib file is loaded, override the viewDidLoad method and perform your tasks there."

+0

обновил мой ответ – stosha

+0

Вы не упоминали об initWithNibName. как насчет этого метода? –

+0

@ShaheerPalolla Обновлен ответ. – Adithya

0

Если ваш видКонтроллеры имеют другое свойство navigationBar, вы можете изменить их следующим образом. В подклассе UIViewController следующие методы:

- (void) viewWillDisappear: (BOOL) animated 
{ 
    [super viewWillDisappear: animated]; 

    [self.navigationItem setTitleView: nil]; 
} 

- (void) viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear: animated]; 

    [self.navigationItem setTitleView: titleView]; 
} 

Это работает.

Смежные вопросы