无法在 UIPopoverController 中显示视图控制器

Posted

技术标签:

【中文标题】无法在 UIPopoverController 中显示视图控制器【英文标题】:Can't present view controller in a UIPopoverController 【发布时间】:2014-10-17 11:18:03 【问题描述】:

我在一个导航控制器中嵌入了多个容器视图。现在我正在尝试使用UIPopoverController 来显示视图。该视图之前已经呈现给用户 - 它位于嵌入导航控制器的容器视图中。如果我尝试在弹出窗口中再次呈现视图,我会得到 ​​p>

应用程序试图以模态方式呈现活动控制器

但视图未激活。它只在导航控制器堆栈中的某个地方。这是否意味着您只能将每个视图呈现一次?

编辑:

这个问题的结构如下所示:

视图控制器 > 容器 A(VC1、VC2、VC3)> 容器 B(VC2、VC4)

现在在容器 B 上,VC3 应该以弹出窗口的形式呈现。在容器 B 中的 VC2 上引发了一个事件(C# 事件)。容器 B 应该显示弹出窗口 --> 应用程序崩溃并且我收到上述错误消息。

现在我尝试直接从 VC2 显示弹出窗口。这似乎有效。也许这是一个问题,因为我重用了容器 B 中的弹出框实例。我会检查一下。

【问题讨论】:

在这种情况下,导航控制器是合适的数据持有者吗?听起来您没有使用视图控制器执行任何导航任务。 我正在从一个容器导航到下一个容器。到目前为止,除了 UIPopoverController 之外,这有效。 啊,我明白了。 VC 是否有可能拥有自己的视图实例,因此您不必重用它? 两个容器中的每一个都在其构造函数中实例化子视图控制器。应该有两个单独的实例。我不知道这样的重用应该从哪里来。 【参考方案1】:

现在我在捕获事件的容器 B 中创建了一个新的 UIPopoverController 实例。它按预期工作,不再崩溃。

仍然不知道为什么我不能用contentViewController 重复使用弹出框。还是因为我使用的是presentPopoverFromRect,而另一次使用的是presentPopoverFromBarButtonItem

【讨论】:

以上是关于无法在 UIPopoverController 中显示视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

UIPopoverController & UIImagePickerControl:“无法从没有窗口的视图中呈现弹出框”

无法实现 UIPopoverController 委托

UIPopoverController?在弹出框控制器外点击时无法关闭

UIPopoverController 中的 UINavigationController:设置标题

UIPopoverController、Xcode 6、IOS 8 使用 Swift

如何使用 iOS 状态恢复来恢复 UIPopoverController?