UINavigationBar颜色意外更改

时间:2009-12-20 10:43:46

标签: iphone uinavigationbar

在我目前的UINavigationController中,viewControllers堆栈看起来像这样。 1 - > 2 - > 3.然而,在从第2个控制器转换到第3个控制器之前,我首先弹出第2个控制器,以便在弹出第3个控制器时,第1个控制器位于顶部。

[self.navigationController popViewControllerAnimated:NO];
[self.navigationController pushViewController:controller animated:YES ] ;

但不知怎的,这样做会将navigationBar的颜色从原来的蓝色默认值更改为黑色样式。在新控制器的viewWillAppear或viewWillDisappear中将barStyle显式设置为UIBarStyleDefault无效。更奇怪的是,如果我设置barStyle,即使是1 - > 2过渡将导致条形颜色变为黑色。

在写这篇文章的最后,我意识到以下代码修复了它。

navBar.barStyle = UIBarStyleDefault-1;

为什么我需要从默认值中减去1以实际获得默认颜色?

2 个答案:

答案 0 :(得分:1)

我不会弹出第二个,只是推第三个。当你解雇第三次使用时

[self.parentViewController.parentViewController popViewControllerAnimated:YES];

这对我来说回到并清理堆栈并让我在控制器1上没有显示控制器2,具有所有正常属性。

答案 1 :(得分:1)

我也遇到了同样的问题。我没有正式答案,但我按照自己的方式解决了这个问题:

-(void)viewWillAppear:(BOOL)animated { 
UIColor *navColor = [[UIColor alloc]initWithRed:0.742778 green:0.0181208 blue:0.0271147 alpha:1];
[self.navigationController.navigationBar setTintColor:navColor];}

我希望有人能提出更好的答案。