iOS 14 popToRootViewControllerAnimated 底部tabbar消失

参考自:https://developer.apple.com/forums/thread/660750

问题症状:
似乎Xcode12 + iOS14上存在已确认的错误。

我在UITabBar的每个项目上都有一个UINavigationController,并且在每个辅助ViewController上都将hidesBottomBarWhenPushed设置为YES,因此TabBar仅显示在navigationController的rootViewController上。但是,当我尝试从A-B-C之类的堆栈中弹出多个ViewController(如pop C)时,我发现TabBar只是在A上丢失了。

另外一个奇怪的部分是,当我在C上的viewWillDisappear:方法中打印navigationController.viewControllers时,我发现它的打印方式类似于“ C-A”。 C如何移动到数组顶部?

在一个简单的演示应用程序上已确认了这一点,想知道何时将其修复。

解决方案:

- (NSArray<__kindof UIViewController *> *)popToRootViewControllerAnimated:(BOOL)animated {
    if (self.viewControllers.count > 1) {
        self.topViewController.hidesBottomBarWhenPushed = NO;
    }
    
    NSArray *viewControllers = [super popToRootViewControllerAnimated:animated];
    // self.viewControllers has two items here on iOS14
    return viewControllers;
}

目前看来,仅仅发生在iOS14上,其他系统未发现,或许是iOS14 的bug。

你可能感兴趣的:(iOS 14 popToRootViewControllerAnimated 底部tabbar消失)