Ios 更改UINavigationBar属性的最佳位置?

Ios 更改UINavigationBar属性的最佳位置?,ios,objective-c,uinavigationbar,Ios,Objective C,Uinavigationbar,我想以编程方式在UINavigationBar属性中进行一些更改-viewDidLoad:或-initWithNibName:是执行此操作的最佳位置,原因是什么?如果您的ViewController具有不同的navigationBar属性,您可以在下一步更改它们。在UIViewController子类中,重写下一个方法: - (void) viewWillDisappear: (BOOL) animated { [super viewWillDisappear: animated];

我想以编程方式在
UINavigationBar
属性中进行一些更改
-viewDidLoad:
-initWithNibName:
是执行此操作的最佳位置,原因是什么?

如果您的ViewController具有不同的navigationBar属性,您可以在下一步更改它们。在UIViewController子类中,重写下一个方法:

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

    [self.navigationItem setTitleView: nil];
}

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

    [self.navigationItem setTitleView: titleView];
}

它起作用了

–viewDidLoad
是执行此类更改的理想功能

顾名思义,调用此函数时,视图将完全加载到内存中,进行此类更改应该不会有任何问题

我不建议在
-视图将出现:
-视图显示:
中进行此类更改,因为每次视图出现时都会调用它们。如果您希望在每次出现导航栏时更改其属性,这将非常有用。我认为这种情况不太可能发生,因此建议
–viewDidLoad
,因为它只会被调用一次


-initWithNibName:
将从nib文件创建控制器实例。您可以执行此函数中提到的操作,但有时它可能会表现出奇怪的行为,因为它可能没有处于正确的状态。甚至Apple文档也建议
“如果您想在加载nib文件后执行额外的初始化,请覆盖viewDidLoad方法并在那里执行您的任务。”

编程意味着您可以在任何地方更改iti,我知道,但我问哪一个是最佳位置。什么属性?是什么创建并拥有导航栏?我想设置titleView、RightBarButtonim和LeftBarButtonim。我认为更好的地方是-(void)ViewDidDisplay:(BOOL)设置为动画,而-(void)ViewWillEnglish:(BOOL)设置为动画。您没有提到initWithNibName。那个方法怎么样?现在它完美了。谢谢你,再见