总是以模态的方式呈现

Posted

技术标签:

【中文标题】总是以模态的方式呈现【英文标题】:Always presenting presenting modally 【发布时间】:2019-06-23 21:30:43 【问题描述】:

无论我做什么,segue 类型总是以模态方式存在(一个 vc 在另一个之上)。即使没有设置它也是如此。目前我的 segue 设置为“显示”,但即便如此,视图控制器顶部的栏仍然存在,当我运行应用程序时,它会在顶部动画上模态显示。 我不知道从这里去哪里!!

正在重置我的电脑。 重新安装 Xcode。 显示vc的不同方式。

This is what I mean by white bar at top

【问题讨论】:

Bradley,再一次,您提供的屏幕截图 - 您能显示视图层次结构吗?哪个视图的背景颜色设置为绿色? 【参考方案1】:

更新:我已经看到您对问题的屏幕截图更新,我想指出您尝试解决的问题与模态演示无关。 “UIViewController”的“视图”的内容不会填满屏幕,因为它被限制在安全区域或其父视图的边缘。

初步答案:

大声笑,但这是一个功能,而不是一个错误。您所说的“显示”设置仅控制动画。为了丢弃所有实例化的模态表示上下文,您必须换出存在此上下文的“UIWindow”的“rootViewController”。

请注意,故事板转场在 UIKit 中不支持此功能。

请注意,使用故事板转场是一种不良做法,应被视为已弃用。主要原因是它阻止了程序员在应用程序中建立适当的路由层,从而导致技术债务迅速增加。

【讨论】:

那我该怎么做呢? 这肯定与segue有关,因为它只有在我添加segue时才会出现。 你在视图控制器中检查过你的视图的约束了吗? 我对任何 vc 都没有任何限制,而且当我不使用 segue 而我使用 self.present() 时,它甚至会以这种方式呈现。 我也刚做了一个新项目,它仍然可以!!!!知道为什么,甚至是如何做到这一点【参考方案2】:

原因是Show具有复杂的含义。意思是:

“如果我们的父级是 UINavigationController,则推送。否则,以模态方式呈现。”

嗯,你的父母不是 UINavigationController。周围没有 UINavigationController !所以 Show 最终的含义与 Present / Modal 完全相同。

【讨论】:

以上是关于总是以模态的方式呈现的主要内容,如果未能解决你的问题,请参考以下文章

应用程序不会以模态方式呈现,但崩溃与`应用程序试图以模态方式呈现活动控制器`

视图控制器以模态方式呈现/关闭时的通知?

以模态方式呈现 UIImagePickerController 时出错

以模态方式呈现的 TableViewController 可抵抗滚动且难以消除

如何在不使用 presentViewController 的情况下以模态方式呈现自定义视图?

以模态方式呈现 ViewController