呈现两个嵌套的模态视图控制器,但只显示最后一个转换

时间:2012-05-11 18:52:04

标签: iphone modalviewcontroller

我有一个应该是模态的第一个VC(视图控制器),并且它有一个子模态VC,有时应该在第一个VC出现时立即呈现,但有时不会。 因此,从根VC我想要呈现第一个VC,并且在第一个VC上呈现子模态VC。但是用户应该只看到子VC模态转换(不是第一个VC)。

AFAIK第一个VC只能在viewDidAppear:之后呈现一个模态VC,所以我不知道如何使它成为可能,因为当调用viewDidAppear:时,第一个VC已经对用户可见。

不希望用户一个接一个地看到2个模态转换,而只是最后一个模态转换,即孩子的转换。

任何提示?

3 个答案:

答案 0 :(得分:5)

如果你还没有找到合适的解决方案,我想出了最简单的解决方案。您可以使用UINavigationController来保存您尝试以模态方式显示的2个嵌套视图控制器。

在用于显示模态视图的函数中,您可以执行以下操作:

- (IBAction)showView3
{

    ViewController2 *new2 = [[ViewController2 alloc] init];   
    ViewController3 *new3 = [[ViewController3 alloc] init];

    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:new2];
    nav.navigationBarHidden = YES;
    [nav pushViewController:new3 animated:NO];
    [self presentModalViewController:nav animated:YES];
}

然后在ViewController3中运行以解除它将具有:

[self.navigationController popViewControllerAnimated:YES];

ViewController2中的那个将具有:

[self dismissModalViewControllerAnimated:YES];

我能看到的唯一问题是美学,因为默认情况下,从view3到view2的过渡是水平动画,但是从view2到view1的过渡是垂直的。你当然可以改变它,使它们全部水平,或全部垂直,或者你想要的。

答案 1 :(得分:1)

你可以有1个模态视图控制器,有2个视图。然后,只需选择视图控制器加载时要显示的视图。

答案 2 :(得分:0)

您应该能够将presentModalViewController放在任何您想要的位置,包括viewWillAppear。

[self presentModalViewController:myModalViewController animated:NO];

编辑:对于阅读此内容的人,请参阅我的其他(正确)答案,因为这不是。