ios开发经常要做各种页面的跳转。
我的viewcontrooler结构是这样的
UITabbarViewController
-> UINavigationController -> UIViewController
-> UINavigationController -> UIViewController
.....
简单的说就是普通的tab应用。
当我在首页用push跳转到另一个UINavigationController时,底下的tabbar还保留着。
一般项目中,我们是如何处理这个push跳转的。
我目前的做法是push前手动吧tabbar隐藏掉,然后返回之后,在viewDidAppear再把tabbar显示出来。
但是总感觉这样不是很靠谱。
有没有其他的方法呢。
在 push 的时候用下面的代码,返回的时候 Tabbar 应该是自动出现的吧。
UIViewController *targetViewController = ...;
targetViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:targetViewController animated:YES];
先自答一下
看到这篇博文,用法很巧妙:
http://jerrytian.com/2016/01/23/yong-rev...
可以直接去github下载源码
https://github.com/JNTian/JTNavigationCo...
YTHelpCenterViewController *YTHCVC = [[YTHelpCenterViewController alloc] init];
**[YTHCVC setHidesBottomBarWhenPushed:YES];**
[self.navigationController pushViewController:YTHCVC animated:YES];
可以这么写,这样的话效果会比在viewwillappear里写隐藏好一些.试过就知道了.
其实我一直认为应该把导航控制器放在最顶层。弱化tabbar,这样的代码更有效。
这个有个小技巧 你可以试下 自定义UINavigationController 然后重写push方法 隐藏底部的工具条 如果全局需求 就所有的VC都用自定义naviVC包装 如果只有一个页面 那么就单独用这个控制器包装。因为是重写push方法,所以不用你pop之后重新显示tabbar。具体代码在下面
#pragma mark - 重写导航控制器的push方法,拦截push操作
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
// 统一隐藏底部的tabbar
viewController.hidesBottomBarWhenPushed = YES;
// 该方法只适用于toolBar的隐藏
NSLog(@"%@",[viewController class]);//viewController 目标控制器
// 执行系统默认的push操作
[super pushViewController:viewController animated:animated];
}