美文网首页
iOSTabbar导航栏push解决

iOSTabbar导航栏push解决

作者: 数字d | 来源:发表于2020-01-16 16:44 被阅读0次

    之前对接七陌客服系统,在Demo中跑页面正常,接入自己公司项目时候,出现了多图层问题。遮盖了客服页面。

    1

    七陌那边开发人员建议我自己排查下图层。

    我这里排查了很长时间也没找到,最后我只好自己先创建一个什么都不写的控制器,然后用原根视图控制器来跳转。

    跳转之后检查图层,出现了两层的导航栏标题。

    首先在TabbarController有三个控制器A,B,C

    中间有一个展示界面是控制器D

    测试的控制器是E

    七陌客服使用的是控制器Q

    除了ABC之外的控制器,我都是自定义navigationbar的,自定义的navigationbar的,

    控制器Q来自第三方,是不隐藏的,默认展示,而且跳转动画也设置为NO。

    解决流程

    在控制器A中跳转到控制器D,从D,如果从D跳转到E之后,没出现两层导航栏,且从E返回D,再返回A没有出现任何的导航栏展示异常,那么就可以使用控制器Q来替代我的测试控制器E.

    这里直接写结果了;

    在A控制器中:(注A控制器是tabbarControllers[0] 也就是第一个元素)

    
    - (void)viewWillAppear:(BOOL)animated
    
        self.navigationController.navigationBar.hidden = NO;
    
    
    //控制器D的构造方法
        HPServerCenterCtl * vc = [[ServerCenterCtl alloc] init];
    
    // 用注释的方法会出现问题,各种问题不好排查
    //    self.navigationController.navigationBar.hidden = YES;
    //    [self.navigationController pushViewController:vc animated:NO];
    
    
    **** 重点:push方法
        [self.tabBarController.childViewControllers[0].navigationController pushViewController:vc animated:NO];
    
    
    

    控制器D中的实现

    - (void)viewDidLoad {
    
        self.navigationController.navigationBar.hidden = YES;
    
    
    - (void)viewWillAppear:(BOOL)animated {
        self.navigationController.navigationBarHidden = YES;
    
    
    - (void)viewWillDisappear:(BOOL)animated {
        self.navigationController.navigationBarHidden = NO;
    
    
    跳转控制器E的实现方法
    
        [self.navigationController pushViewController:vc animated:NO];
    
    
    
    

    控制器E中的实现

    
    - (void)viewDidLoad {
    
        self.navigationController.navigationBar.hidden = YES;
    
    
    - (void)viewWillDisappear:(BOOL)animated {
        self.navigationController.navigationBarHidden = NO;
    
    
    

    这是最希望看到的场景的实现方法。

    当测试结束后,将控制器E替换成控制器Q即可。

    相关文章

      网友评论

          本文标题:iOSTabbar导航栏push解决

          本文链接:https://www.haomeiwen.com/subject/binfzctx.html