以编程方式推送模态视图控制器

时间:2012-07-23 22:58:34

标签: objective-c xcode cocoa-touch uiviewcontroller modal-dialog

  

可能重复:
  How to create custom modal segue in 4.2 Xcode using storyboard

所以我有一个viewController,我想以模态方式推送到我当前的视图控制器。这是我的故事板的屏幕截图,我试图加载突出显示的视图: enter image description here

所以我在当前视图和第二个导航控制器之间创建了一个segue,让我们称之为“警报”。因为我没有将segue绑定到任何类型的按钮,所以我只是尝试在以下if语句中以模态方式加载视图:

if([detector judgeSpeed:[ratio floatValue]])
{
    //push the new view here
}

我该如何解决这个问题?我是否需要实现某种委托或prepareForSegue方法?

4 个答案:

答案 0 :(得分:5)

你可以使用segue,但这是另一种选择:

SomeViewController *controller = [self.storyboard instantiateViewControllerWithIdentifier:@"SomeIdentifier"];
[self.navigationController presentModalViewController:controller animated:YES]

请记住在故事板中设置视图控制器的标识符。

更多信息和示例项目here

答案 1 :(得分:3)

presentModalViewController 是iOS 6的代码,但我需要iOS 9代码。有人可以帮忙吗?

答案 2 :(得分:1)

How to create custom modal segue in 4.2 Xcode using storyboard上的答案应该会有所帮助。

T.J回答:

UIViewController *src = (UIViewController *) self.sourceViewController;
[UIView transitionWithView:src.navigationController.view duration:0.5
                   options:UIViewAnimationOptionTransitionFlipFromTop
                animations:^{
                    [src.navigationController popToViewController:[src.navigationController.viewControllers objectAtIndex:0] animated:NO];;
                }
                completion:NULL];

tiguero的回答:

[self.sourceViewController presentModalViewController:self.destinationViewController animated:NO];

这些答案中的任何一个都应该回答这个问题。

答案 3 :(得分:0)

在故事板中,通过从视图控制器本身拖动到新视图控制器,从演示视频捕获视图控制器创建一个segue到新的视图控制器。您可以通过从演示视频捕获视图控制器下方的黑色条中的黄色按钮拖动到新视图来执行此操作。当它询问哪种类型选择modal时。仍然在故事板中,单击segue并在右侧的身份导航器中将其标识为“警报”。现在转到.m文件并使用此实现...

if([detector judgeSpeed:[ratio floatValue]])
{
   [self performSegueWithIdentifier:@"alert" sender:self];
}