2012-07-05 26 views
1

我无法将某个选项卡视图设置为UiNavigation控制器。我得到的警告是:无法将UINavBarController设置为UITabBarController

Pushing a navigation controller is not supported 

这里是我的代码:

- (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; 
     viewController1 = [[HomeViewController alloc] initWithNibName:@"HomeViewController_iPhone" bundle:nil]; 
     viewController2 = [[SearchViewController alloc] initWithNibName:@"SearchViewController_iPhone" bundle:nil]; 
     viewController3 = [[ListViewController alloc] initWithNibName:@"ListViewController_iPhone" bundle:nil]; 
     viewController4 = [[InfoViewController alloc] initWithNibName:@"InfoViewController_iPhone" bundle:nil]; 

    self.tabBarController = [[UITabBarController alloc] init]; 
    UINavigationController * listNavController = [[UINavigationController alloc] initWithRootViewController:viewController3]; 
    self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, listNavController, viewController4, nil]; 
    self.window.rootViewController = self.tabBarController; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

回答

0
self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, listNavController, viewController4, nil]; 

self.tabBarController.viewControllers = [NSArray arrayWithObjects:viewController1, viewController2, viewController3, viewController4, nil]; 

,并保持到导航控制器的参考,如果需要的。我认为这将是正确的做法,但您也可以将导航控制器包装在一个简单的UIViewController中。如果viewController3不能保证在任何时候都是堆栈中最底层的VC,你会想要这样做。