在我想要的现有视图之上:
a)向用户显示屏幕
b)然后发送短信
c)向用户显示另一个屏幕.
a)向用户显示屏幕
b)然后发送短信
c)向用户显示另一个屏幕.
对于a)我这样做:
[[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控制器?
解决方法
您可以在另一个关闭后呈现一个:
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];