Objective c 如何将其他视图控制器推送到NavigationController上,但保留选项卡栏?
我有一个应用程序,它以导航控制器根目录下的基本视图控制器开始Objective c 如何将其他视图控制器推送到NavigationController上,但保留选项卡栏?,objective-c,ios,cocoa-touch,uinavigationcontroller,uitabbarcontroller,Objective C,Ios,Cocoa Touch,Uinavigationcontroller,Uitabbarcontroller,我有一个应用程序,它以导航控制器根目录下的基本视图控制器开始 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.navController.viewControllers = [NSArray arrayWithObject:[self getHomeViewController]]; [[self
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.navController.viewControllers = [NSArray arrayWithObject:[self getHomeViewController]];
[[self getWindow] addSubview:self.navController.view];
[[self getWindow] makeKeyAndVisible];
return YES;
}
一旦选择了一个导航项,我就会推一个带有几个视图控制器的选项卡栏控制器
-(void)launchOptionWithTabBarController:(NSUInteger)selectedIndex
{
self.tabBarController.viewControllers = [NSArray arrayWithObjects:
[self getFirstViewController],
[self getSecondViewController],
nil];
[self.tabBarController setSelectedIndex:selectedIndex];
[self.navController pushViewController:self.tabBarController animated:YES];
}
问题是,我现在需要在选项卡栏控制器中打开的视图控制器的顶部添加另一个视图控制器。。。当我像这样把一个推到导航控制器上
- (void)launchNewViewControllerWithArray:(NSArray *)stuff
{
self.newViewController = [self getNewViewController];
[self.navController pushViewController:self.newViewController animated:YES];
}
我不再看到选项卡栏导航(我更希望看到这个导航,包括我推送的每个项目)
如何修改控制流以使选项卡栏导航项保持在底部?您需要在选项卡栏控制器中设置导航控制器的父级,而不是相反。或者在tabbar控制器上引入另一个作为父项的导航控制器,并将新的viewcontroller推到该控制器上。您可以通过在tabbar选定的viewcontroller上推新的viewcontroller来实现这一点。所以你可以这样写你的启动函数
- (void)launchNewViewControllerWithArray:(NSArray *)stuff
{
self.newViewController = [self getNewViewController];
[[self.tabbarController selectedViewController] pushViewController:self.newViewController animated:YES];
}