在 Xcode 11 中,我从单 View 应用程序模板创建了一个新的应用程序项目。我希望这个应用程序能够在 iOS 12 和 iOS 13 中运行。但是当我将部署目标切换到 iOS 12 时,我收到了很多类似这样的错误消息:
UIWindowScene is only available in iOS 13 or newer
我应该做什么?
最佳答案
Xcode 11 中的模板使用场景委托(delegate)。场景委托(delegate)和相关类是 iOS 13 中的新增内容;它们在 iOS 12 及之前版本中不存在,并且启动过程也不同。
要使从 Xcode 11 应用模板生成的项目向后兼容,您需要将整个 SceneDelegate 类以及 AppDelegate 类中引用 UISceneSession 的任何方法标记为 @available(iOS 13.0, *)
.
您还需要在 AppDelegate 类中声明一个 window
属性(如果您不这样做,应用程序将运行并启动,但屏幕将是黑色的):
var window : UIWindow?
结果是,当此应用程序在 iOS 13 中运行时,场景委托(delegate)具有 窗口
,但当它在 iOS 12 或更早版本中运行时,应用程序委托(delegate)具有 窗口
code> - 然后您的其他代码可能需要考虑那个才能向后兼容。
关于ios - Xcode 11 向后兼容性 : "UIWindowScene is only available in iOS 13 or newer",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58100345/