如何将UINavigationController添加到呈现为Modal的UIViewController

时间:2013-02-25 01:00:05

标签: iphone xcode ios6 uinavigationcontroller presentmodalviewcontroller

我的应用程序中有另一个流程。这个流程从我的firstViewController开始,然后在这个视图中调用我的第二个ViewController,如下所示:

- (IBAction)PressButton:(id)sender {

    SecondViewController *second = [[SecondViewController alloc] init];
    second.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
    UINavigationController *nav = self.navigationController;
    [nav presentViewController:second animated:YES completion:nil];                              
}

在我的secondViewController中,我想推送我的第三个ViewController。但它不起作用我试过这种方式:

- (IBAction)pressButton:(id)sender {

   ThirdViewController *tvc = [[ThirdViewController alloc] init];
   UINavigationController *nav = self.navigationController;
   [nav pushViewController:tvc animated:YES];

}

当我按下secondViewController的按钮时没有任何反应。

我做错了什么?

我正在使用:

  • OSX 10.8.2
  • Xcode 4.6
  • iOS 6.1

4 个答案:

答案 0 :(得分:11)

您必须以模态方式显示导航控制器,并将第二个视图作为该导航控制器的根目录。以及从拥有视图调用presentViewController而不是其父导航控制器。

- (IBAction)PressButton:(id)sender {
        SecondViewController *second = [[SecondViewController alloc] init];
        second.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
        UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:second];
        [self presentViewController:navigationController animated:YES completion:nil];    
    }

答案 1 :(得分:2)

请确保提供额外的导航控制器,而不是仅显示第二个视图控制器。

SecondViewController *secondViewController = [[SecondViewController alloc] init];

UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:secondViewController];
[[self navigationController] presentViewController:navigationController animated:YES completion:nil];

答案 2 :(得分:0)

如果您使用的是故事板,只需单击源视图xib,按Ctrl +拖动到目标(Create Segue),从弹出菜单中选择模式。单击新创建的连接。然后在源视图控制器[self performSegueWithIdentifier:@"Segue Name" sender:self];

中为其添加名称

答案 3 :(得分:0)

如果您尝试使用按钮以模态方式将您定向到其他页面,则可以进入storyboard或xib文件。控制单击该按钮到要转到的视图控制器。然后弹出菜单将为您提供您要使用的插座类型的选项。希望这有帮助