可以呈现视图控制器也是一个呈现视图控制器?
问题描述:
在我想要的现有视图之上:a)向用户显示一个屏幕 b)然后发送一个SMS c)向用户显示另一个屏幕。可以呈现视图控制器也是一个呈现视图控制器?
对于)我这样做:
[[UIApplication sharedApplication].delegate.window.rootViewController presentViewController: firstController animated: NO completion:nil];
和B)我做同样的事情,除了这当然呈现一个不同的VC,一个MFMessageComposeViewController。
但是为了b)中出现我先用解雇的第一个视图控制器:
[[UIApplication sharedApplication].delegate.window.rootViewController dismissViewControllerAnimated:NO completion: nil];
,到目前为止的工作,我可以看到的第一个视图中显示,然后看到短信撰写视图出现。 当SMS发送我这样做辞退短信撰写视图
[[UIApplication sharedApplication].delegate.window.rootViewController dismissViewControllerAnimated:NO completion: nil];
但后来当我尝试提出了另一个屏幕使用presentViewController用户没有任何反应。我不明白为什么会这样,有没有我不知道的事情?
其实SMS视图之前和之后的屏幕它是相同的,只是它们具有不同的文字,所以步骤的最简单的序列将是:
a)用文本“ABC” B存在视图控制器)呈现SMS控制器 c)中,当SMS被发送驳回SMS控制器 d)使用一个IBOutlet E)关闭该第一视图控制器更新所述第一视图控制器的文本。
然而如前所述,如果我不辞退的第一个视图控制器将不会出现在SMS控制器。所以我的主要问题是如何在第一个视图控制器上显示SMS控制器?
答
的iOS不允许你在同一时间打开两个模式的看法。模态视图被设计为最顶层的视图。
答
您可以在另一个关闭之后存在一个:
UIViewController *rvc = [UIApplication sharedApplication].delegate.window.rootViewController;
[rvc dismissViewControllerAnimated:NO completion:^{
[rvc presentViewController: secondController animated: NO completion:nil];
}];
或存在另一个之上:
UIViewController *rvc = [UIApplication sharedApplication].delegate.window.rootViewController;
UIViewController *pvc = rvc.presentedViewController; // you may need to loop through presentedViewControllers if you have more than one
[pvc presentViewController: secondController animated: NO completion:nil];
iOS 5中(我使用的)“莫代尔”
但是现在更的遗留术语,并注意我如何使用presentViewController而不是presentModalViewController。这种情况下,呈现的视图控制器不能成为呈现视图控制器? – Gruntcakes 2012-04-23 21:36:28