0

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

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

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

有什么提示吗?

4

3 回答 3

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 的过渡是垂直的。您当然也可以更改它以使它们全部水平,或全部垂直,或者您想要的任何方式。

于 2012-05-13T01:24:35.500 回答
1

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

于 2012-05-11T18:59:41.090 回答
0

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

[self presentModalViewController:myModalViewController animated:NO];

编辑:对于阅读本文的任何人,请参阅我的另一个(正确)答案,因为这个答案不是。

于 2012-05-11T19:00:32.173 回答