2

在我当前的 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 才能实际获得默认颜色?

4

2 回答 2

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];}

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

于 2011-07-26T08:48:45.353 回答
1

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

[self.parentViewController.parentViewController popViewControllerAnimated:YES];

对我来说,这会返回并清理堆栈并将我留在控制器 1 上,而不会显示具有所有正常属性的控制器 2。

于 2010-11-30T14:19:44.327 回答