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