【问题标题】:Presenting two modal viewcontrollers in a row causes the second one to not appear连续呈现两个模态视图控制器会导致第二个不出现
【发布时间】:2011-06-13 13:07:42
【问题描述】:

问题如下:在我的 applicationDidEnterBackground 中,我模态地呈现了一个视图控制器,比如视图控制器 A。所以每次启动应用程序时,A 都会在屏幕上显示。现在,如果在应用程序执行期间,其他一些视图控制器(例如视图控制器 B)以模态方式呈现,并且应用程序被发送到后台,然后您重新启动应用程序,则 A 不可见。这就是问题所在。

我尝试了各种不同的东西,包括从不同的视图控制器呈现 A 和 B,如果 B 在屏幕上,则从 B 呈现 A,延迟后呈现 A,子类化 B 并在应用程序激活时使其呈现 A...似乎没有任何效果。我完全迷路了,我想知道这是否是一个错误。有什么想法吗?

【问题讨论】:

  • 你能贴出你用来展示那些模态视图控制器的代码吗?
  • 没有太多代码可以展示,只是以模态方式展示视图控制器。当另一个人不在时,他们每个人都可以完美地工作,并且他们不共享任何东西以使他们相互冲突
  • 我也遇到过类似的问题。实际上,如果您尝试同时呈现两个 modalViewController 会发生什么,第一个 modalViewController 将单独呈现。第二个不会出现。 (即)Only one modalViewController can be presented at a time.
  • 好吧,我有一个文件隐藏应用程序,每次启动时都会显示一个密码屏幕。所以如果一个 MPMoviePlayerViewController 的 UIImagePickerController 出现了,那么当应用程序恢复时,绝对没有办法将它们放在屏幕后面?

标签: iphone xcode uiviewcontroller modalviewcontroller


【解决方案1】:

尝试重新设计您的应用,以免呈现 2 个模态视图。您不能呈现 2 个模态,因此您需要自行选择。

通常,您可以为视图控制器的过渡效果设置动画,以模仿您使用 presentModal 的目的。

【讨论】:

  • 应用正常运行时,实际上可以呈现两个模态视图控制器。问题是,如果已经存在另一个视图控制器,则在进入背景或前景时,您无法呈现模态视图控制器。我不得不重新设计该应用程序,以便它在进入后台时关闭模态视图控制器。好像没有别的办法了
【解决方案2】:

查看我编写的 MDFPResenter 类。您使用它来呈现而不是 UIViewController 方法。它调用 UIViewController 方法,但它确保调用正确排队,因此您的应用不会崩溃。

https://github.com/mpdifran/MDFPresenter

【讨论】:

    猜你喜欢
    • 2013-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    相关资源
    最近更新 更多