【问题标题】:Present a whole screen view controller over a modal view controller在模态视图控制器上呈现全屏视图控制器
【发布时间】:2016-06-08 23:06:14
【问题描述】:

我有一个 iPad 应用程序,它在主视图控制器上显示一个模态视图控制器。

在模态视图控制器中,有一个图像。

┌─────────────────────────────────┐
│                                 │
│      main VC in background      │
│                                 │
│      ┌───────────────────┐      │
│      │  ┌─────────────┐  │      │
│      │  │             │  │      │
│      │  │    Image    │  │      │
│      │  │             │  │      │
│      │  │             │  │      │
│      │  └─────────────┘  │      │
│      │                   │      │
│      │     Modal VC      │      │
│      │                   │      │
│      │                   │      │
└──────┴───────────────────┴──────┘

我希望能够单击图像以将图像缩放到整个屏幕的大小。

如果我从模态视图控制器呈现缩放视图控制器,那么它将保持与模态视图相同的大小:

┌─────────────────────────────────┐
│                                 │
│      main VC in background      │
│                                 │
│      ┌───────────────────┐      │
│      │                   │      │
│      │                   │      │
│      │       Image       │      │
│      │                   │      │
│      │                   │      │
│      │                   │      │
│      ├───────────────────┤      │
│      │                   │      │
│      │     Modal VC      │      │
│      │                   │      │
└──────┴───────────────────┴──────┘

...如果我尝试从主视图显示缩放视图控制器,我将收到此错误:

Warning: Attempt to present ZoomViewController on MainViewController which is already presenting ModalViewNavigationController

那么在模态视图控制器上显示全屏视图控制器的正确方法是什么?

【问题讨论】:

    标签: ios swift ipad storyboard segue


    【解决方案1】:

    使用 OverFullScreen 演示样式在最顶部的模态 vc 上演示。基本上从已经模态呈现的 vc 中呈现另一个模态。应该是你的 ModalViewNavigationController?

    【讨论】:

    • 执行此操作时,我仍然收到“警告:尝试呈现”错误。这可能是因为模态视图控制器正在呈现一个自定义 UIPresentationController,它具有 .OverFullScreen 因为它是adaptivePresentationStyle(我尝试将模态更改为 OverCurrentContext 具有相同的结果)
    • 你必须展示在最前面的视图控制器上。一个视图控制器只能呈现一个模态 vc。所以你需要从modalVC呈现。
    【解决方案2】:

    你想做的事情可能是不可能的。但你可以解决它。

    你真的需要模态呈现吗?如果主 VC 中没有用户可以与之交互的内容,则仅以非模态方式呈现“模态 VC”。

    但如果您确实需要阻止用户与主 VC 的其他视图交互,您可以首先在其上方放置一个覆盖屏幕的透明视图,以防止与后面的其他视图进行任何交互。然后在前面非模态地呈现“模态VC”,然后再次在前面呈现全屏图像。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 2011-12-08
      • 1970-01-01
      • 2019-02-12
      相关资源
      最近更新 更多