iOS14 多級頁面執行popToRoot方法造成tabbar消失問題

近期在項目中跳轉兩層以上頁面執行popToRootViewControllerAnimated方法時,發現會造成底部tabbar隱藏

逐步打印頁面層級結構發現,在A-B-C頁面push跳轉中,打印self.navigationController.viewControllers方法獲取到的是正常的層級數組[A,B,C]

但在執行popToRootViewControllerAnimated后,正常情況下或iOS14以下版本中在root頁面A頁面打印層級數組應該是[A][self.navigationController.childViewControllers indexOfObject:self]的index為0,這時為正確?的情況,tabbar在root頁面會正常顯示;

但在ios14版本中在root頁面A頁面獲取到的數組發成了錯亂?,變成了[C,A],index變為了1,由于根導航控制器中有做viewController.hidesBottomBarWhenPushed = YES;處理,會導致tabbar消失隱藏

尋找一眾原因終于在蘋果開發者論壇中看到了同樣的執行popToRoot造成tabbar消失問題,發覺應該是官方錯誤,只能在根導航控制器中先做預處理???♀????♀????♀?
目前僅在iOS14版本發現此問題,其他版本尚無問題


解決方案
重寫RootNavigationController的popToRootViewControllerAnimated方法

- (NSArray<__kindof UIViewController *> *)popToRootViewControllerAnimated:(BOOL)animated {
    if (self.viewControllers.count > 1) {
        self.topViewController.hidesBottomBarWhenPushed = NO;
    }

    return [super popToRootViewControllerAnimated:animated];
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容