结合标签,导航控制器和视图控制器
问题描述:
我已经创建了一个标签式应用程序,每个标签有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;
}
答
(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://stackoverflow.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];
我加viewController1一个navigationController内,这navigationController对象添加到tabBarController。现在它工作正常。请参阅http://stackoverflow.com/questions/14015122/combining-navigation-controller-with-tab-bar-controller – Ramprasad 2013-05-09 07:08:25