参考自: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。