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<UIViewController *> *viewControllers = [super popToRootViewControllerAnimated:animated];
    // self.viewControllers has two items here on iOS14
    return viewControllers;
}

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。