开发的时候提的需求是个人中心的导航栏要隐藏,但是二级页面不能隐藏导航栏,并且要侧滑POP,我们这里直接使用右滑手势的扩展 UINavigationController+FDFullscreenPopGesture,使用的时候直接
navigationV.fd_fullscreenPopGestureRecognizer.enabled = YES;
就行了。
首先我们自定义导航栏,重写下面的方法:
//push的时候判断到子控制器的数量。当大于零时隐藏BottomBar 也就是UITabBarController 的tababar
-(void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
if(self.viewControllers.count > 0){
viewController.hidesBottomBarWhenPushed = YES;
}
[super pushViewController:viewController animated:animated];
}
然后在隐藏导航栏的页面按照下面的代码设置
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
self.navigationController.fd_prefersNavigationBarHidden = YES;//其实和下面这句有点重复了,不过不影响
[self.navigationController setNavigationBarHidden:YES animated:animated];
}
这样就可以做到侧滑返回并且隐藏导航栏了,而且动画比较平滑。
顺便奉上一个防止页面的按钮一块点击的方法
//防止按钮同时点击一块跳转
-(void)setExclusiveTouchForButtons:(UIView *)myView{
for (UIView * v in [myView subviews]) {
if([v isKindOfClass:[UIButton class]]){
[((UIButton *)v) setExclusiveTouch:YES];
}else if ([v isKindOfClass:[UIView class]]){
[self setExclusiveTouchForButtons:v];
}
}
}