2010-09-20 65 views
1

视图是模态呈现模态的视图:如何推到新视图控制器从实现的UITabBarController

[self presentModalViewController:modalNavController animated:YES]; 

该视图使用具有4个元件的UITabBarController。其中一个元素,“信息”有一个按钮,只有当它可用时才可见。如果按钮被点击,它需要推送到另一个视图控制器,但我也想维护它的父视图中的标签栏。我一直无法弄清楚如何在保留标签栏的情况下做到这一点。我尝试过在所有我能够想象的地方推动和呈现Modally。这应该如何正确完成?

创建标签栏:

infoController.title = @"Info"; 
    streetViewController.title = @"Street View"; 
    reviewController.title = @"Reviews"; 

    streetViewController.tabBarItem.image = [UIImage imageNamed:@"flag.png"]; 
    infoController.tabBarItem.image = [UIImage imageNamed:@"openMarker.png"]; 
    reviewController.tabBarItem.image = [UIImage imageNamed:@"reviews.png"]; 


UITabBarController *tabBarController = [[UITabBarController alloc] init]; 
    tabBarController.view.frame = CGRectMake(0, 0, 320, 460); 

    UINavigationController *infoNC = [[[UINavigationController alloc] initWithRootViewController:infoController] autorelease]; 
    infoNC.navigationBarHidden = YES; 


[tabBarController setViewControllers: 
    [NSArray arrayWithObjects:infoNC, streetViewController, reviewController, nil]]; 


[self.view addSubview:tabBarController.view]; 

回答

2

当您添加视图控制器的标签栏控制器,你需要这样做:

MyCustomViewController *vc1 = [[MyCustomViewController alloc] initWithNibName:nil bundles:nil]; 
UINavigationController *nc1 = [[[UINavigationController alloc] initWithRootViewController:recipesRootView] autorelease]; 
[vc1 release]; 

再加入nc1,而不是您的自定义视图。

然后在MyCustomViewControllerpush另一个视图控制器做:

[self.navigationController pushViewController:(UIViewController *)page animated:YES]; 

这应该为你工作,并保持标签栏控制器。

+0

谢谢你的清晰思想,托马斯。我现在遇到的问题是,第二个视图打开后,“后退”按钮关闭整个模态视图层次结构。我会尝试用弹出当前视图的不同putton替换后退按钮。 – 2010-09-20 10:04:57

+0

你可以发布你的整个代码,所以我可以看到你是如何制作标签栏控制器等。我不知道为什么会这样,因为它实际上不应该。 :)你不是创建标签栏控制器** IN **是一个导航控制器是你吗?# – 2010-09-20 10:25:05

+0

我编辑。我添加标签栏视图作为子视图。 – 2010-09-20 10:32:58

相关问题