例如:
在控制器A
内设置:
- viewWillAppear:中
self.navigationController.navigationBarHidden = YES;
- viewWillDisappear:中
self.navigationController.navigationBarHidden = NO;
要求控制器B
的导航正常显示,所以在控制器B
内什么都不需要做!
当控制器A
-push->控制器B
之后,再由控制器B
侧滑至控制器A
情况:
控制器A:
![](https://img.haomeiwen.com/i1698345/78597bc8d5376fab.png)
控制器B:
![](https://img.haomeiwen.com/i1698345/92e60c57cc75a35c.png)
侧滑过程中:
![](https://img.haomeiwen.com/i1698345/2b1371b2382c6542.png)
侧滑过程中,执行了控制器A
的viewWillAppear:
的方法,导致如上图所示导航栏消失。
解决办法有两个,分别如下:
1、禁止侧滑
// 在A中- viewDidLoad中添加如下代码禁止侧滑
id traget = self.navigationController.interactivePopGestureRecognizer.delegate;
UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc] initWithTarget:traget action:nil];
[self.view addGestureRecognizer:pan];
2、修改控制器A
的导航栏的消失与显示
- viewWillAppear:中
[self.navigationController setNavigationBarHidden:YES animated:animated];
- viewWillDisappear:中
[self.navigationController setNavigationBarHidden:NO animated:animated];
采用第二种方法之后:
![](https://img.haomeiwen.com/i1698345/7e16b8d3521cf026.png)
网友评论