结合标签,导航控制器和视图控制器

问题描述:

我已经创建了一个标签式应用程序,每个标签有4个标签和4个viewController。我尝试在FirstViewController中添加导航栏,它只添加导航栏,内容区域显示为黑色。结合标签,导航控制器和视图控制器

  • 如何组合导航控制器,选项卡和视图控制器?
  • 什么是组合ViewControllers的可能方式?

我Tab和视图控制器代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
    // Override point for customization after application launch. 
    UIViewController *viewController1, *viewController2,*viewController3, *viewController4; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     viewController1 = [[VKFirstViewController alloc] initWithNibName:@"VKFirstViewController_iPhone" bundle:nil]; 
     viewController2 = [[VKSecondViewController alloc] initWithNibName:@"VKSecondViewController_iPhone" bundle:nil]; 
     viewController3 = [[VKThirdViewController alloc] initWithNibName:@"VKThirdViewController_iPhone" bundle:nil]; 
     viewController4 = [[VKFourthViewController alloc] initWithNibName:@"VKFourthViewController_iPhone" bundle:nil]; 

    } else { 
     viewController1 = [[VKFirstViewController alloc] initWithNibName:@"VKFirstViewController_iPad" bundle:nil]; 
     viewController2 = [[VKSecondViewController alloc] initWithNibName:@"VKSecondViewController_iPad" bundle:nil]; 
     viewController3 = [[VKThirdViewController alloc] initWithNibName:@"VKThirdViewController_iPad" bundle:nil]; 
     viewController4 = [[VKFourthViewController alloc] initWithNibName:@"VKFourthViewController_iPad" bundle:nil]; 

    } 
    self.tabBarController = [[UITabBarController alloc] init]; 
    self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3, viewController4]; 
    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 
+0

我加viewController1一个navigationController内,这navigationController对象添加到tabBarController。现在它工作正常。请参阅http://*.com/questions/14015122/combining-navigation-controller-with-tab-bar-controller – Ramprasad 2013-05-09 07:08:25

(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ 

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
// Override point for customization after application launch. 

    UINavigationController *firstNav = [[UINavigationController alloc]init]; 
    UINavigationController *secondNav = [[UINavigationController alloc]init]; 


    UIViewController *viewController1, *viewController2,*viewController3, *viewController4; 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
    viewController1 = [[VKFirstViewController alloc] initWithNibName:@"VKFirstViewController_iPhone" bundle:nil]; 
    viewController2 = [[VKSecondViewController alloc] initWithNibName:@"VKSecondViewController_iPhone" bundle:nil]; 
    viewController3 = [[VKThirdViewController alloc] initWithNibName:@"VKThirdViewController_iPhone" bundle:nil]; 
    viewController4 = [[VKFourthViewController alloc] initWithNibName:@"VKFourthViewController_iPhone" bundle:nil]; 
    firstNav.viewControllers = @[viewController1, viewController2,viewController3, viewController4]; 

} else { 
    viewController1 = [[VKFirstViewController alloc] initWithNibName:@"VKFirstViewController_iPad" bundle:nil]; 
    viewController2 = [[VKSecondViewController alloc] initWithNibName:@"VKSecondViewController_iPad" bundle:nil]; 
    viewController3 = [[VKThirdViewController alloc] initWithNibName:@"VKThirdViewController_iPad" bundle:nil]; 
    viewController4 = [[VKFourthViewController alloc] initWithNibName:@"VKFourthViewController_iPad" bundle:nil]; 
    secondNav.viewControllers = @[viewController1, viewController2,viewController3, viewController4]; 
} 
self.tabBarController = [[UITabBarController alloc] init]; 
self.tabBarController.viewControllers = @[firstnav, secondNav]; 
self.window.rootViewController = self.tabBarController; 
[self.window makeKeyAndVisible]; 
return YES; 

}

我加viewController1一个navigationController内,这navigationController对象添加到tabBarController。现在它工作正常。请参阅https://*.com/a/14030551/1119440

UIViewController *tmpviewController1, *viewController2,*viewController3, *viewController4; 
     UINavigationController *viewController1; 


     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 

      //UIViewController *tmpViewController1 = [[[YourViewController alloc] init] initWithNibName:@"YourViewController" bundle:nil]; 
      tmpviewController1 = [[VKFirstViewController alloc] initWithNibName:@"VKFirstViewController_iPhone" bundle:nil]; 
      viewController1 = [[UINavigationController alloc] initWithRootViewController:tmpviewController1]; 

      //viewController1 = [[VKFirstViewController alloc] initWithNibName:@"VKFirstViewController_iPhone" bundle:nil]; 
      viewController2 = [[VKSecondViewController alloc] initWithNibName:@"VKSecondViewController_iPhone" bundle:nil]; 
      viewController3 = [[VKThirdViewController alloc] initWithNibName:@"VKThirdViewController_iPhone" bundle:nil]; 
      viewController4 = [[VKFourthViewController alloc] initWithNibName:@"VKFourthViewController_iPhone" bundle:nil]; 

     } else { 
      viewController1 = [[VKFirstViewController alloc] initWithNibName:@"VKFirstViewController_iPad" bundle:nil]; 
      viewController2 = [[VKSecondViewController alloc] initWithNibName:@"VKSecondViewController_iPad" bundle:nil]; 
      viewController3 = [[VKThirdViewController alloc] initWithNibName:@"VKThirdViewController_iPad" bundle:nil]; 
      viewController4 = [[VKFourthViewController alloc] initWithNibName:@"VKFourthViewController_iPad" bundle:nil]; 

     } 
     self.tabBarController = [[UITabBarController alloc] init]; 
     self.tabBarController.viewControllers = @[viewController1, viewController2,viewController3, viewController4];