小编典典

Xcode 11-在iOS 13上退出UISceneDelegate / SwiftUI

swift

我当前正在使用Xcode 11 Beta5。在我的应用程序中,它可以在iOS 12及更低版本上正常运行。但是,在iOS
13上,默认情况下看起来像在使用UIScene。这导致我的应用无法执行任何操作。

当应用程序以全新安装启动时,用户必须接受条款和条件。同意后,他们进入加载屏幕,然后将其定向到主视图。在我发布的屏幕截图中,当前当前前景背后的视图是启动加载屏幕。

我们将很快考虑在整个应用程序中添加多视图场景支持,但是现在我们需要处理更高优先级的内容。

https://imgur.com/i0qLhAL

该应用程序目标的“常规”设置中的“支持多个窗口”已被禁用。另外,我在info.plist文件中将“启用多个Windows”设置为“否”。

到目前为止,什么都没有真正起作用。基本上我想选择退出/禁用多个窗口和UIScene / SwiftUI以恢复iOS 10-12中的原始行为。这可能在iOS
13中还是我们必须对其进行更新?

更新:

这是视图调试层次结构的屏幕截图。左侧是iOS
12,右侧是iOS13。在没有向Info.plist或场景代理类或方法中添加任何内容的情况下,为什么会有所不同呢?几乎只是在Xcode
11的现有生产就绪代码中运行了它。

https://imgur.com/C3aLsDo


阅读 297

收藏
2020-07-07

共1个答案

小编典典

当您的应用程序在iOS 13及更高版本下运行时,虽然应该拥抱使用场景,但在仍支持iOS 12或更早版本的情况下,您可以完全退出。

首先,从Info.plist中完全删除“ Application Scene Manifest”条目。

如果有场景委托类,请将其删除。

如果您的应用程序委托中有任何与场景相关的方法,请删除这些方法。

如果缺少该属性,则将该属性添加var window: UIWindow?到您的应用程序委托中。

您的应用现在应仅使用应用委托,在iOS 13下,其生命周期应与iOS 12相同。

这些都不是特定于Swift或SwiftUI的。

2020-07-07