在现有视图之上,我希望:a)向用户显示屏幕B)然后发送SMS 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];
到目前为止,我可以看到第一个视图出现,然后看到短信撰写视图出现。当短信发送时,我这样做是为了消除短信撰写视图
[[UIApplication sharedApplication].delegate.window.rootViewController dismissViewControllerAnimated:NO completion: nil];
但是当我尝试使用presentViewController向用户显示另一个屏幕时,什么也没发生。我看不出为什么会这样,是不是有什么我不知道的事情?
实际上,SMS视图之前和之后的屏幕是相同的,除了它们有不同的文本,所以最简单的步骤序列将是:
a)向视图控制器呈现文本“abc”b)呈现SMS控制器c)当SMS被发送时解除SMS控制器d)使用IBOutlet更新第一视图控制器中的文本e)解除第一视图控制器。
但是正如前面提到的,如果我不关闭第一个视图控制器,SMS控制器就不会出现,所以我的主要问题是如何在第一个视图控制器上显示SMS控制器?
5条答案
按热度按时间odopli941#
您可以在一个关闭后显示另一个:
或者在上面展示另一个:
xghobddn2#
我刚在iOS15上试过。是的,一个被介绍的VC可以介绍另一个VC。
假设您有:
你可以很容易地在VC2上调用
present(VC3(), animated: true, completion: nil)
,事情就会很好地工作。你可以很高兴地结束:当你解除VC3时,它只会回到VC2,而不会回到VC1。
rqenqsqc3#
iOS不允许同时打开两个模态视图,模态视图被设计为最顶层视图。
dba5bblo4#
在我的例子中,我可以直接访问显示的视图控制器,因此在这种情况下:
but5z9lq5#