不能连续调用dismissModalViewController吗?

Posted

技术标签:

【中文标题】不能连续调用dismissModalViewController吗?【英文标题】:Can you not call dismissModalViewController in succession? 【发布时间】:2012-01-26 16:20:51 【问题描述】:

我有一个模式视图控制器,用户可以在其中输入信息。当他们点击提交按钮时,该信息被发送到服务器并且模态视图控制器被解除。

但是,如果用户没有登录,当他们点击提交时,它会加载一个登录屏幕(作为另一个模态视图控制器)。登录后,登录视图控制器被解除,他们的信息被发送到服务器,视图控制器被解除。问题是,他们输入信息的视图控制器仍然在屏幕上。

我可以通过延迟关闭数据输入视图控制器来解决此问题。似乎如果我同时快速关闭两个视图控制器,第二个仍然存在。

还有其他人看过吗?

【问题讨论】:

你能展示你是如何关闭两个modalViewControllers的代码吗?可能,第一个控制器在解除其子控制器之前被解除并释放。 所以如果第一次登录失败,那么第一个模态登录视图会保留,而另一个第二个模态登录视图会放在顶部? 【参考方案1】:

我已经确定问题是因为第一个模式被解除(视图控制器中的登录)在我解除第二个模式(数据输入视图控制器)之前没有消失。当第二个dismiss调用发生时,登录视图控制器仍然被认为是顶视图控制器,所以第二个VC没有任何反应。

【讨论】:

【参考方案2】:

当您刚刚从前一个控制器呈现新的 modalView 时,就会发生这种情况。 您并没有解雇前一个控制器。

您需要从启动登录控制器的位置关闭控制器。 您需要保持指向“信息”控制器的指针可访问,并且在登录时提交成功时,您需要像从 LoginController 或 appDelegate 一样关闭信息控制器(只要您可以保持指针可访问):

[info dismissModalViewControllerAnimated:NO];

【讨论】:

以上是关于不能连续调用dismissModalViewController吗?的主要内容,如果未能解决你的问题,请参考以下文章

MySQL 错误 2014 - 命令不同步 - 尝试调用连续存储过程时

微信小程序开发——连续快速点击按钮调用小程序api返回后仍然自动重新调用的异常处理

三菱PLC中,用CALL指令时,可以连续多次调用同一个子程序嘛(即当某个子程序运行完成,又调用该子

关于函数的创建和调用

可以在 html 5 中连续播放两次声音吗?

web打印有那几种方法