更改UINavigationBar属性的最佳位置?

时间:2013-06-16 08:43:21

标签: ios objective-c uinavigationbar

我想在UINavigationBar属性以编程方式进行一些更改。 - viewDidLoad:-initWithNibName:是最好的地方,为什么?

2 个答案:

答案 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];
}

有效。