首页 > iOS开发如何正确地Push到另外一个viewcontroller

iOS开发如何正确地Push到另外一个viewcontroller

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];

}
【热门文章】
【热门文章】