例如:
在控制器A
内设置:
- viewWillAppear:中
self.navigationController.navigationBarHidden = YES;
- viewWillDisappear:中
self.navigationController.navigationBarHidden = NO;
要求控制器B
的导航正常显示,所以在控制器B
内什么都不需要做!
当控制器A
-push->控制器B
之后,再由控制器B
侧滑至控制器A
情况:
控制器A:

控制器B:

侧滑过程中:

侧滑过程中,执行了控制器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];
采用第二种方法之后:

网友评论