【发布时间】:2014-01-27 17:30:15
【问题描述】:
我在导航 vc 中嵌入了根 vc,我使用 [self.navigationController setNavigationBarHidden:YES];
将导航栏设置为隐藏
它工作正常,导航栏消失了。
并推送第二个vc使用[self.navigationController pushViewController:controller animated:YES];
在第2个vc中设置导航栏显示。一切顺利。
所以当我点击导航栏上的“后退按钮”时,我发现导航栏消失的速度比视图快,尤其是设置视图的背景为黑色,我可以看到
整个视图都是黑色的,就像从来没有导航栏一样。
我不想要这个,我只希望导航栏一直存在,直到 viewDidDisappear。
Here is a picture of the problem
我使用[self.navigationController popViewControllerAnimated:YES]; 并且必须填写 Animated is YES 才能重现此外观。
对于排序,
- 导航vc中的两个vc。
- 根 vc 的导航栏被隐藏,第二个 VC 从根 vc 推送。
- 第二个 vc 制作了导航栏显示。
- 使用
[self.navigationController popViewControllerAnimated:YES]支持。
代码位置在哪里:
ps:无论你如何设置导航栏的hidden-property,在ViewDidLoad或者ViewWillAppear或者ViewDidAppear或者其他地方,它们的外观都是一样的。
在根vc的viewDidLoad中[self.navigationController setNavigationBarHidden:YES];
和 root vc 的 didSelectRowAtIndexPath:[self.navigationController setNavigationBarHidden:NO];
【问题讨论】:
-
[self.navigationController setNavigationBarHidden:YES];您在代码中的哪里使用此行? viewDidLoad、viewWillAppear、viewDidAppear?
-
@jai 就在 viewDidLoad 中
-
将您的第一个视图控制器设置为您的导航控制器委托,并在您的第一个视图控制器中实现这些委托方法。 - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated 和 - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
-
在 viewWillAppear 中执行
-
您可以发现返回的视图控制器是第一个和第二个,因此可以更改隐藏/可见您的导航栏...
标签: ios navigationbar popviewcontrolleranimated