如何在不关闭TabBarController的情况下呈现ModelModalController

时间:2012-05-08 20:08:39

标签: objective-c ios modalviewcontroller tabbarcontroller

嘿伙计们我试图在一个带有标签栏控制器的应用程序中呈现一个模态视图控制器。问题是,每次出现新视图时,它都会显示在我的标签栏上。

即使呈现视图,我也需要保留标签栏。就像谷歌地图应用程序在屏幕底部的工具栏一样。

我该怎么做?

谢谢

3 个答案:

答案 0 :(得分:1)

默认情况下,模态视图控制器用于占据整个屏幕(至少在iPhone / iPod上)。因此,它涵盖了当时屏幕上的所有内容。

答案 1 :(得分:0)

通过模态segue呈现的视图控制器意味着独立存在。如果你想保留你的导航和TabBar,那么只需使用push segue来呈现新的ViewController。记得要使用这种segue,你的演示控制器必须已经成为UINavigationController的一部分。

使用它来推送ViewController。如果是UINavigationController,它将自己推送其链接的RootViewController。

创建一个viewController来推送:(使用Storyboard)

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"LoginViewController"];

或(使用代码/笔尖)

LoginViewController *viewController = [[LoginViewController alloc] init]; //initWithNibNamed in case you are using nibs.
//in case you want to start a new Navigation: UINavigationController = [[UINavigationController alloc] initWithRootViewController:viewController];

并推送:

[self.navigationController pushViewController:vc animated:true];

此外,如果您使用故事板进行segues,您可以使用它来完成所有的工作。请记住设置segue标识符。

[self performSegueWithIdentifier:@"pushLoginViewController" sender:self]; //Segue needs to exist and to be linked with the performing controller. Only use this if you need to trigger the segue with coder rather than an interface object.

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if ([[segue identifier] isEqualToString:@"pushLiftDetail"]) {
        [[segue.destinationViewController someMethod:]];
        segue.destinationViewController.someProperty = x;
    }
}

答案 2 :(得分:-1)

我认为您需要在模态视图中添加UITabBar并实现/复制主栏所具有的按钮和功能。模态窗口的本质是它具有完全控制权,直到它被解除。

您可以尝试将UITabBarController放入NavBarController中,但我不确定这是否可行。

UITabBarController - > NavBarController - >模态视图