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

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

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

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

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

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

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

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

【问题讨论】:

    标签: ios objective-c cocoa-touch cocoa


    【解决方案1】:

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

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

    - (void)didMoveToParentViewController:(UIViewController *)parent
    {
        [super didMoveToParentViewController:parent];
    
        UINavigationController *navigationController = (UINavigationController*)parent;
        navigationController.navigationBar.barTintColor = [UIColor redColor];
    }
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-25
        • 2011-11-21
        • 1970-01-01
        • 2012-12-31
        • 1970-01-01
        • 1970-01-01
        • 2014-11-09
        • 1970-01-01
        相关资源
        最近更新 更多