代码之家  ›  专栏  ›  技术社区  ›  Borut Tomazin

如何在viewController推送操作后管理新视图上的TabBarController

  •  1
  • Borut Tomazin  · 技术社区  · 14 年前

    我在用tabBarController构建应用程序时遇到问题。 如果我从AppDelegate构建tabBarController,那么使用navigationController执行tabBarController没有问题。

    它根本不起作用。

    MainViewController *mainViewController = [[MainViewController alloc] initWithNibName:@"MainView_iPhone" bundle:nil];
    mainViewController.tabBarItem.title = @"First";
    UINavigationController *mainNavigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
    
    DictionariesViewController *dictionariesViewController = [[DictionariesViewController alloc] initWithNibName:@"DictionariesView_iPhone" bundle:nil];
    dictionariesViewController.tabBarItem.title = @"Second";
    UINavigationController *dictionariesNavigationController = [[UINavigationController alloc] initWithRootViewController:dictionariesViewController];
    
    tabBarController = [[UITabBarController alloc] init];
    tabBarController.viewControllers = [NSArray arrayWithObjects:mainNavigationController, dictionariesNavigationController, nil];
    
    [self.navigationController pushViewController:tabBarController animated:YES];
    

    将视图推送到“第一个”控制器后出现问题。应用程序崩溃。。。

    请帮忙。

    2 回复  |  直到 14 年前
        1
  •  1
  •   ryanprayogo    14 年前

    你想用下面的代码做什么?

    [self.navigationController pushViewController:tabBarController animated:YES];
    

    你说你的应用程序有3个标签,每个标签都有一个导航控制器。因此,您应该做的是将导航控制器添加到 tabBarController.viewControllers (你做到了),但是你需要设置 tabBarController 作为根视图控制器。

        2
  •  1
  •   Borut Tomazin    14 年前

    我是这样做的,而且很有效:

    registerViewController = [[RegisterViewController alloc] initWithNibName:@"RegisterView_iPhone" bundle:nil];
    AppDelegate_Phone *delegatePhone = [[UIApplication sharedApplication] delegate];
    [delegatePhone.firstViewController.navigationController pushViewController:registerViewController animated:YES];
    

    谢谢你们的帮助。