美文网首页
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