在我目前的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以实际获得默认颜色?
答案 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];}
我希望有人能提出更好的答案。