看到这篇文章的标题,也许你并不知道我想表达什么。
其实我也不知道我用什么标题来表述我想写的内容:
我在这里解释一下吧。
有的时候,产品会要求你只有在主页面的时候 显示TabBar,当你push进入到次级界面和以后的界面时,TabBar都要隐藏。只有back到第一个页面(首页)才会显示出TabBar。
这时候 你也许会设置
@property(nonatomic) BOOL hidesBottomBarWhenPushed 这个属性来达到你的目的。
其实完全没有这个必要,因为你要知道,你Push 和Back 都是通过NavigationController来做到的。所以我们可以重写一下navigationController中的属性来做到:
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated;
因为push是压入到栈中,后来者居上:
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated{
//判断当前控制器中的自控制器个数
if (self.viewControllers.count > 0) {
//进入到次级界面count大于1,这时隐藏
self.tabBarController.tabBar.hidden = YES;
}
[super pushViewController:viewController animated:animated];
}
再重写返回的方法:
- (nullable UIViewController *)popViewControllerAnimated:(BOOL)animated;
- (nullable UIViewController *)popViewControllerAnimated:(BOOL)animated{
if (self.viewControllers.count ==1 ) {
self.tabBarController.tabBar.hidden = NO;
}
[super popViewControllerAnimated:animated];
}
ok 设置完成快去体验吧。!