1

My main viewController A has a UITabbarViewController which has 5 tabs.

  • On viewcontroller A, I set [self.navigationController setNavigationBarHidden:YES] for some purpose of my app.

  • On viewController at tab 2, I have a table view, I want when I select a row of table, I will present a viewController B (with also has navigationBar and tabbar)

    • I tried [self.navigationController pushViewCOntroller:B animated:YES] but it's not workking. I think because of setting hidden for navigationBar
    • I also tried [self presentModalViewController:B], it worked but on viewcontroller B, it showed full screen (navigationBar and tabbar disappeard)

Can anyone help me? Thanks in advance

4

1 回答 1

1

怎么样

                         tabBarController
                                    |
                                    |
                                    |-->Item1ViewController
                                    |
                                    |-->NavController->Item2ViewController->push->VCB
                                    |
                                    |-->Item3ViewController
                                    |

只需确保 tabBarController 尚未包含在 NavigationController 中,这会导致混淆。

您可以选择显示/隐藏 Item2ViewController 和 VCB 上的导航栏,方法是设置它们各自的属性。

如果使用情节提要,您可以在使用菜单项“嵌入...”设置 tabBarController 后将 Item2ViewController 嵌入 NavContoller。

如果在代码中你可以做这样的事情:

    UIViewController* vc1 = [[UIViewController alloc] init];
    UIViewController* vc2 = [[UIViewController alloc] init];
    UIViewController* vc3 = [[UIViewController alloc] init];
    UIViewController* vc4 = [[UIViewController alloc] init];
    UIViewController* vc5 = [[UIViewController alloc] init];
    UINavigationController* navC = 
           [[UINavigationController alloc] initWithRootViewController:vc2];
    NSArray* viewControllers  = @[vc1,navC,vc3,vc4,vc5];
    UITabBarController* tabC = [[UITabBarController alloc] init];
    tabC.viewControllers = viewControllers;
    [self presentViewController:tabC animated:YES completion:nil];

        //  don't do this:
    //  [self.view addSubview:tabC.view];

(“展示”位是有争议的,它实际上取决于您的应用程序结构的其余部分)。

于 2013-04-14T15:55:02.733 回答