例如:
在控制器A内设置:
- viewWillAppear:中
self.navigationController.navigationBarHidden = YES;
- viewWillDisappear:中
self.navigationController.navigationBarHidden = NO;
要求控制器B的导航正常显示,所以在控制器B内什么都不需要做!
当控制器A-push->控制器B之后,再由控制器B侧滑至控制器A情况:
控制器A:
VCA.png
控制器B:
VCB.png
侧滑过程中:
侧滑过程中.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];
采用第二种方法之后:
修复后.png









网友评论