天天看點

iOS從子視圖傳回根視圖,然後切換tabbar遇到的坑

        自從Xcode更新到9以後就小問題不斷,今日又遇到一個問題。我的程式架構用的是一個tabbar對應四個導航控制器,然後我的需求是從首頁的第四個界面,進入到他的下一級界面後,還要再直接傳回到首頁的第三個界面,但是當我調用如下代碼後,卻發現首頁底部的tabbar消失了。

[weakSelf.navigationController popToRootViewControllerAnimated:NO];

weakSelf.navigationController.tabBarController.selectedIndex = 2;           

        本以為是從首頁跳轉到下一級界面的時候調用了hidesbottombarwhenpushed = YES;的問題,但調試後發現并不是這個問題,然後我又在首頁的第三個界面的viewWillApper方法中,把對應的tabbar的隐藏屬性修改為不隐藏,但發現還是消失了。這時我猜測可能是回退站的機制出問題了,然後我注視掉了[weakSelf.navigationController popToRootViewControllerAnimated:NO];這句代碼,這時從首頁第四個界面的子視圖傳回到首頁第三個界面時tabbar不消失了,但是我點選首頁第四個界面的tabbar按鈕時,仍然顯示的是首頁第四個界面的子視圖。最終又經過幾次嘗試,發現問題的解決方案很簡單,隻需要把這兩行代碼的順序調整一下就行了,像下邊這樣,但目前并沒有找到造成這個問題根本的原因是什麼。

weakSelf.navigationController.tabBarController.selectedIndex = 2;

[weakSelf.navigationController popToRootViewControllerAnimated:NO];