1

我的故事板是如下推送 - 視圖 - 控制器:iOS的 - 無法TabbarController顯示

enter image description here

UINavigationController 
    | 
UITabbarController 
     | 
    HomeVC - Container 
       | 
       PageViewController 
        | 
        MainVC | MenVC | WomenVC | ElectronicsVC ... 

我試圖推動從MainVC一個新的視圖控制器,採用tabbarcontroller。我希望底部的tabbar可見,但我不能。每當新的viewcontroller被推入時,它將全屏顯示。

在我NavigationHelper.m,

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainV3" bundle:nil]; 
    MyNewViewController *myNewVC = [storyboard instantiateViewControllerWithIdentifier:@"MyNewViewController"]; 
    [myTabbarController setHidesBottomBarWhenPushed:NO]; 
    [myTabbarController.navigationController pushViewController:myNewVC animated:YES]; 

    // I have checked myTabbarController and myNewVC instances are not nil. 

爲什麼我用pageviewcontroller在這個設計,因爲我需要在tabbarcontroller的第一個項目幾個視圖控制器的原因。

設置tabbarcontroller setHidesBottomBarWhenPushed屬性爲是之前我推新控制器不工作太。

我已經檢查了HomeVC中的容器沒有覆蓋tabbar。

回答

1

發生這種情況是因爲當您調用myTabbarController.navigationController上的push時,實際上在與UITabBarController控制器相同的層級上添加了一個更多的控制器。

UINavigationController 
     | 
    UITabBarController –> YourPushedViewController 

以其酒吧和它所包含的一切沿着這顯然隱藏整個UITabBarController

如果你想在特定的導航標籤 - 你應該UINavigationController在這個標籤,然後做push使用它。

所以你的新層次應該是這樣的。

UITabBarController 
    | 
    FirstTab — SecondTab — ... 
    | 
    UINavigationController 
    | 
    HomeVC - Container 
       | 
      PageViewController 
       | 
       MainVC | MenVC | WomenVC | ElectronicsVC ... 
+0

感謝您的黑魔法。有用。所以,我的故事板是按照你的建議。我將在UINavigationController上進一步學習。不過,我使用pageviewcontroller來推送它,因爲它是MainVC容器內的項目的一部分。 – felixwcf

+0

可否請您提供相同@wcf的工作示例代碼 – Abhishek

2

你需要在這個方案中設置您的TabBarController作爲應用程序的根目錄,如:

TabBarController -> Tab1 -> UINavigationController -> ViewContoller1 -> ViewContoller2. 

螞蟻不喜歡:

NavigationController -> TabBarController -> VC1 -> VC2 

在可以ViewContoller1之間導航這樣的情況下,並且ViewContoller2和TabBarContoller將保持可見狀態。