我想在UINavigationBar
属性以编程方式进行一些更改。 - viewDidLoad:
或-initWithNibName:
是最好的地方,为什么?
答案 0 :(得分: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."
答案 1 :(得分:0)
如果您的视图控制器具有不同的导航栏属性,您可以在下一步更改它们。在UIViewController子类中覆盖下一个方法:
- (void) viewWillDisappear: (BOOL) animated
{
[super viewWillDisappear: animated];
[self.navigationItem setTitleView: nil];
}
- (void) viewDidAppear:(BOOL)animated
{
[super viewDidAppear: animated];
[self.navigationItem setTitleView: titleView];
}
有效。