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

时间:2010-09-20 09:44:58

标签: iphone uitabbarcontroller uitabbar

视图以模态呈现:

[self presentModalViewController:modalNavController animated:YES];

此视图使用带有4个元素的UITabBarController。其中一个元素,“信息”有一个按钮,只有在可用时才可见。如果单击该按钮,则需要将其推送到另一个视图控制器,但我还想从其父视图中维护标签栏。无论是否保留标签栏,我都无法弄清楚如何做到这一点。我曾试图在所有可以成像的地方推动和呈现模式。该如何正确完成?

创建标签栏:

    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];

1 个答案:

答案 0 :(得分: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];

这应该对你有用,并保留标签栏控制器。