首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在iOS上选择退出UISceneDelegate/SwiftUI

在iOS上选择退出UISceneDelegate/SwiftUI
EN

Stack Overflow用户
提问于 2019-08-12 19:15:30
回答 6查看 62.1K关注 0票数 161

我目前正在使用Xcode 11 Beta 5,在我的应用程序中,它在iOS 12和更低版本上运行良好。然而,在iOS 13上,它看起来是默认使用UIScene的。这导致我的应用程序什么都不做。

当应用程序在新安装启动时,用户必须接受一些条款和条件。在同意之后,他们进入一个加载屏幕,然后引导他们到主视图。在我发布的截图中,前景中当前屏幕后面的视图是。

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

“支持多个窗口”已经在应用程序目标的一般设置中被禁用。此外,我还在info.plist文件中将多个Windows设置为NO。

到目前为止,一切都不起作用。基本上,我希望选择退出/禁用多个窗口和UIScene/SwiftUI,以恢复iOS 10-12中的原始行为。这在iOS 13中是可能的还是我们必须更新它?

更新:

以下是视图调试层次结构的屏幕截图。左边是iOS 12,右边是iOS 13。不向Info.plist添加任何内容,也不添加任何场景委托类或方法,为什么会有所不同?差不多就是在Xcode 11上的现有生产准备代码中运行它。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2019-08-12 19:34:45

当您的应用程序在运行于 13或更高版本时,应该支持使用场景,但是您可以在仍然支持iOS 12或更高版本时完全退出。

  • 从Info.plist中完全删除“应用场景说明”条目。
  • 如果有场景委托类,请删除它。
  • 如果您的应用程序委托中有任何与场景相关的方法,请删除这些方法。
  • 如果丢失,请将属性var window: UIWindow?添加到应用程序委托中。

您的应用程序现在应该只使用应用程序委托,在iOS 13下,它应该具有与iOS 12相同的生命周期。

注意:,这些都不是Swift或SwiftUI特有的。

票数 417
EN

Stack Overflow用户

发布于 2019-08-12 19:34:23

这也是我面临的问题,这里有几个场景:

  • 如果您想在Xcode 11中使用现有的应用程序,只需打开它就可以了。我所有的应用程序都有,没有SceneDelegate文件,也没有对AppDelegate或故事板进行任何更改。
  • 如果您想要创建一个针对UIKIT 13的新应用程序,只需创建它,同时确保不选中"Use SwiftUI“复选框。

但我想知道你是否面临着第三种情况--一周前我就做过了。创建一个新的“`UIKit应用程序”,目标是比iOS 13更早的东西。(实际上我的目标是iOS 9!)

是的,您的模板将给您带来15个错误(从beta 5开始),以及一个SceneDelegate文件/类。幸运的是,Xcode将帮助您自动更正除一个以外的所有内容。

最后一条是添加一行,这是SceneDelegate类的一部分,但遗憾的是,苹果把它排除在了AppDelegate类之外--在超过十几条@available(iOS 13.0, *)条款之后,这意味着如果运行iOS 12,您已经选择退出SceneDelegate,你猜怎么着?那是,不是,在ApDelegate

将此添加到您的AppDelegate中:

代码语言:javascript
复制
var window: UIWindow?

此时,您应该有一个针对iOS 12和更早版本的正在运行的iOS应用程序。

票数 48
EN

Stack Overflow用户

发布于 2020-03-28 22:30:36

我用dfd的答案来解决这个问题,但是由于我的应用程序在目标C中,所以我不得不做一个改变:

在目标C中,你想把

代码语言:javascript
复制
@property (strong, nonatomic) UIWindow *window;

在AppDelegate.h中(不在.m中)

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57467003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档