2012-04-23 138 views
7

在我想要的现有视图之上: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控制器?

回答

0

的iOS不允许你在同一时间打开两个模式的看法。模态视图被设计为最顶层的视图。

+3

但是现在更的遗留术语,并注意我如何使用presentViewController而不是presentModalViewController。这种情况下,呈现的视图控制器不能成为呈现视图控制器? – Gruntcakes 2012-04-23 21:36:28

8

您可以在另一个关闭之后存在一个:

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中(我使用的)“莫代尔”
+0

通过以上第二种方法是否有任何更改从Appstore拒绝应用程序..? – g212gs 2016-04-28 14:25:18

+1

如果您要呈现/解散视图控制器,为什么应用商店会关心它? – 2016-04-28 15:46:48

+0

原因通常我们一次只能显示一个viewController, 但是我可以通过使用你的技术来实现我想要的。 – g212gs 2016-04-29 07:30:02

相关问题