0

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

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

我怎样才能做到这一点?

谢谢

4

3 回答 3

1

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

于 2012-05-08T20:56:13.017 回答
0

通过模态 segue 呈现的视图控制器意味着独立存在。如果你想保留你的 Navigation 和 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];

此外,如果您将 Storyboards 用于 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;
    }
}
于 2014-01-29T19:32:15.990 回答
-1

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

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

UITabBarController -> NavBarController -> 模态视图

于 2012-05-08T20:12:26.153 回答