什么?popToRoot vc后tabBar不见了

iOS14发布后,项目中多处出现了这个问题,主要是在iOS14 popToRootViewControllerAnimated后tabbr就不见了,是由hidesBottomBarWhenPushed导致,下面是简单的触发场景:

A push B,B push C,C popToRootViewControllerAnimated:YES,这时候tabbar就不见了。

如果一级一级的pop就不会有这个问题,如果把popToRoot的Animated改为NO也不会有这个问题。

如何解决:

1、那里出现就解决那里,pop root之前先设置当前VC的hidesBottomBarWhenPushed

self.hidesBottomBarWhenPushed = NO;

[self.navigationController popToRootViewControllerAnimated:YES];

2、统一处理,重写UINavigationController的popToRootViewControllerAnimated方法

– (NSArray<__kindof UIViewController *> *)popToRootViewControllerAnimated:(BOOL)animated {

    if (animated) {

        UIViewController *topVC = self.viewControllers.lastObject;

        topVC.hidesBottomBarWhenPushed = NO;

    }

    return [super popToRootViewControllerAnimated:animated];

}

3、从最初出发,按需设置,重写UINavigationController的pushViewController方法

– (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {

    if (self.viewControllers.count == 1) {

        viewController.hidesBottomBarWhenPushed = YES;

    } else {

        viewController.hidesBottomBarWhenPushed = NO;

    }

    [super pushViewController:viewController animated:animated];

}


请根据各自项目选择合适的方案,如果各位有更好的解决办法也请留言回复,谢谢。

尊重原创内容,转载请注明出处
本文链接地址: https://www.awnlab.com/archives/483

为您推荐

发表评论

电子邮件地址不会被公开。 必填项已用*标注