我有三个控制器,每个控制器在导航栏上都有不同的风格
控制器A:白色导航栏,透明状态栏(以便内容可见),通过导航栏上的自定义bg图像实现
控制器B:白色导航栏,白色状态栏,通过导航栏上的自定义bg图像实现
控制器C:隐藏导航栏,只有带按钮的自定义透明视图
标准用例是A> B> C又回来了
问题是只有一个导航栏对象,当我更新它的可见性或背景图像时,它适用于所有视图控制器。因此,当我从A转到B时,状态栏在转换期间变为白色。当我从B转到C时,即使B仍然可见(或者在它消失之后,取决于我是否在viewWillAppear或viewDidAppear中更改了导航栏),导航栏也会消失。
我的目标是让"分开"所有控制器的导航栏样式,以便它在转换过程中不会发生变化,但是新控制器会使用它自己的导航栏滑入,而旧的控制器会随着导航栏样式不变而消失。
如果没有使用我自己的UINavigationController实现,这样的事情是否可能?
答案 0 :(得分:2)
是的,这是可能的。 UINavigationController具有navigationBarHidden
属性。将其设置为true可隐藏控制器A,B和C的导航控制器。
然后为每个子视图控制器(A,B和C)添加导航栏或按钮,以便使用视图控制器进行推送/弹出。
当点击B和C的后退按钮时,您可能需要致电popViewControllerAnimated
。
<强>结构:强>
UINavigationController (with navigationBarHidden set to true)
|
+- UIViewController A
| |
| + UINavigationBar
|
+- UIViewController B
| |
| + UINavigationBar
|
+- UIViewController C
|
+ UIButton