UINavigationController

UINavigationController

我在视图加载方法中设置了导航控制器的颜色,如下所示:

- (void)viewDidLoad
{
    [super viewDidLoad];
    UINavigationController *navigationController = [self navigationController];
    navigationController.navigationBar.barTintColor = [UIColor redColor];
}

以上将我的导航栏设置为红色,没有问题。

当用户关闭应用程序并且对应用程序的状态进行编码,然后重新打开应用程序并且对状态进行解码时,导航栏将显示默认的白色。

在状态恢复中正在调用View did load,但导航控制器为nil。我猜这就是为什么默认颜色又回来了。

我已经在导航控制器以及更改颜色的视图控制器上设置了恢复ID。

有谁知道我该怎么做才能保持为导航控制器设置的红色?

最佳答案

这可能是由于在将视图控制器添加为导航控制器的子控制器之前加载了视图。

代替viewDidLoad,在didMoveToParentViewController:中实现代码,如下所示:

- (void)didMoveToParentViewController:(UIViewController *)parent
{
    [super didMoveToParentViewController:parent];

    UINavigationController *navigationController = (UINavigationController*)parent;
    navigationController.navigationBar.barTintColor = [UIColor redColor];
}

10-07 19:51
查看更多