我当前正在使用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
当您的应用程序在iOS 13及更高版本下运行时,虽然应该拥抱使用场景,但在仍支持iOS 12或更早版本的情况下,您可以完全退出。
首先,从Info.plist中完全删除“ Application Scene Manifest”条目。
如果有场景委托类,请将其删除。
如果您的应用程序委托中有任何与场景相关的方法,请删除这些方法。
如果缺少该属性,则将该属性添加var window: UIWindow?到您的应用程序委托中。
var window: UIWindow?
您的应用现在应仅使用应用委托,在iOS 13下,其生命周期应与iOS 12相同。
这些都不是特定于Swift或SwiftUI的。