我有一个应该是模态的第一个VC(视图控制器),并且它有一个子模态VC,有时应该在第一个VC出现时立即呈现,但有时不会。 因此,从根VC我想要呈现第一个VC,并且在第一个VC上呈现子模态VC。但是用户应该只看到子VC模态转换(不是第一个VC)。
AFAIK第一个VC只能在viewDidAppear:之后呈现一个模态VC,所以我不知道如何使它成为可能,因为当调用viewDidAppear:时,第一个VC已经对用户可见。
不希望用户一个接一个地看到2个模态转换,而只是最后一个模态转换,即孩子的转换。
任何提示?
答案 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];
编辑:对于阅读此内容的人,请参阅我的其他(正确)答案,因为这不是。