【发布时间】:2011-07-27 11:51:34
【问题描述】:
在我当前的 UINavigationController 中,viewControllers 堆栈看起来像这样。 1 -> 2 -> 3. 然而,在从第二个控制器过渡到第三个控制器之前,我先弹出第二个控制器,以便在弹出第三个控制器时,第一个控制器在顶部。
[self.navigationController popViewControllerAnimated:NO];
[self.navigationController pushViewController:controller animated:YES ] ;
但不知何故,这样做会将导航栏的颜色从原来的蓝色默认更改为黑色样式。在新控制器的 viewWillAppear 或 viewWillDisappear 中将 barStyle 显式设置为 UIBarStyleDefault 无效。奇怪的是,如果我完全设置 barStyle,即使是 1 -> 2 过渡也会导致条形颜色变为黑色。
在写完这篇文章的时候,我意识到下面的代码修复了它。
navBar.barStyle = UIBarStyleDefault-1;
为什么我需要从默认值中减去 1 才能真正获得默认颜色?
【问题讨论】:
-
更重要的是,你到底是怎么发现这个的?
-
在 viewWillAppear 中,我注意到将 barStyle 设置为 UIBarStyleDefault 会导致 UIBarStyleBlack,在枚举中为 +1,所以我认为它被关闭了。我还没有尝试在单独的项目中对此进行测试。
-
什么是 NSLog(@"%i", UIBarStyleDefault);说?您可能以某种方式使自己陷入了这样一种情况,即您的代码和可可导航控制器库已使用定义此枚举的不同版本的头文件进行编译? (我不知道这是怎么发生的!)