uinavigationcontroller在iOS中失去了状态恢复的色彩

时间:2014-03-21 23:39:45

标签: ios objective-c cocoa-touch cocoa

我在视图中设置导航控制器的色调,按如下方式加载方法:

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

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

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

查看在状态恢复时调用了负载,但导航控制器为零。我猜这就是为什么默认颜色会回来。

我在导航控制器上设置了恢复ID,以及正在改变颜色的视图控制器。

有谁知道我能做些什么来保持我为导航控制器设置的红色?

2 个答案:

答案 0 :(得分:2)

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

而不是viewDidLoad,在didMoveToParentViewController:中实现代码,如下所示:

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

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

答案 1 :(得分:0)

当应用程序启动/恢复时,您可能最好为应用程序委托中的导航栏设置色调颜色。

如果此色调颜色对于某个特定视图控制器显示时是唯一的,则使用导航控制器的委托方法作为进行设置的位置。

无论哪种方式,这将始终有效。