objective-c - iOS开发如何正确地Push到另外一个viewcontroller
ringa_lee
ringa_lee 2017-04-17 17:50:25
[iOS讨论组]

ios开发经常要做各种页面的跳转。
我的viewcontrooler结构是这样的

UITabbarViewController
-> UINavigationController -> UIViewController
-> UINavigationController -> UIViewController
.....

简单的说就是普通的tab应用。
当我在首页用push跳转到另一个UINavigationController时,底下的tabbar还保留着。
一般项目中,我们是如何处理这个push跳转的。
我目前的做法是push前手动吧tabbar隐藏掉,然后返回之后,在viewDidAppear再把tabbar显示出来。
但是总感觉这样不是很靠谱。
有没有其他的方法呢。

ringa_lee
ringa_lee

ringa_lee

全部回复(5)
怪我咯

先自答一下
看到这篇博文,用法很巧妙:
http://jerrytian.com/2016/01/23/yong-rev...
可以直接去github下载源码
https://github.com/JNTian/JTNavigationCo...

PHPz

这个有个小技巧 你可以试下 自定义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];

}
大家讲道理

在 push 的时候用下面的代码,返回的时候 Tabbar 应该是自动出现的吧。

UIViewController *targetViewController = ...;
targetViewController.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:targetViewController animated:YES];
PHP中文网

其实我一直认为应该把导航控制器放在最顶层。弱化tabbar,这样的代码更有效。

黄舟

YTHelpCenterViewController *YTHCVC = [[YTHelpCenterViewController alloc] init];

        **[YTHCVC setHidesBottomBarWhenPushed:YES];**
        [self.navigationController pushViewController:YTHCVC animated:YES];
        
        
        可以这么写,这样的话效果会比在viewwillappear里写隐藏好一些.试过就知道了.
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号