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

Posted

技术标签:

【中文标题】uinavigationcontroller 在 iOS 中失去状态恢复的色彩【英文标题】:uinavigationcontroller loses tint on state restoration in iOS 【发布时间】:2014-03-21 23:39:45 【问题描述】:

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

- (void)viewDidLoad

    [super viewDidLoad];
    UINavigationController *navigationController = [self navigationController];
    navigationController.navigationBar.barTintColor = [UIColor redColor];

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

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

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

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

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

【问题讨论】:

【参考方案1】:

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

代替viewDidLoad,像这样实现didMoveToParentViewController:中的代码:

- (void)didMoveToParentViewController:(UIViewController *)parent

    [super didMoveToParentViewController:parent];

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

【讨论】:

【参考方案2】:

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

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

无论如何,这将始终如一地工作。

【讨论】:

以上是关于uinavigationcontroller 在 iOS 中失去状态恢复的色彩的主要内容,如果未能解决你的问题,请参考以下文章

在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?

从嵌入在 UINavigationController 中的一个视图控制器到另一个 UINavigationController

(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换

关闭 UINavigationController 并呈现另一个 UINavigationController

带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller

UINavigationController 嵌套在 moreViewController 中的问题