我正在使用云工具包的核心数据,因此必须在应用程序启动期间判断iCloud用户状态.如果出现问题,我想向用户发布一个对话框,到目前为止我使用UIApplication.shared.keyWindow?.rootViewController?.present(...).

在Xcode 11 beta 4中,现在有一条新的弃用消息,告诉我:

iOS 13.0中不推荐使用"keyWindow":不应用于支持多个场景的应用程序,因为它会在所有连接的场景中返回一个关键窗口

我该如何呈现对话呢?

推荐答案

这是我的解决方案:

let keyWindow = UIApplication.shared.connectedScenes
        .filter({$0.activationState == .foregroundActive})
        .compactMap({$0 as? UIWindowScene})
        .first?.windows
        .filter({$0.isKeyWindow}).first

用法,例如:

keyWindow?.endEditing(true)

Swift相关问答推荐

如何使用快速宏用来自函数的关联值来初始化枚举?

";async let和";async之间的差异让我们等待";

如何写一个;风格;视图修饰符,它会影响特定类型的所有嵌套视图?

如何通过 Enum 属性使用新的 #Predicate 宏获取

根据其属性组合 2 个模型以在 Swift 中创建另一个模型

如何制作一个在 SceneKit 中投射阴影的透明物体?

如何在闭包中使用构造 await sync

需要将 json 映射到 Swift 中的模型

如何自己实现同一个 iOS 16 锁屏圆形小部件?

有没有更快的方法来循环浏览 macOS 上已安装的应用程序?

快速递归:函数与闭包

为什么 SwiftUI 不在工具栏菜单中反映 @State 属性值?

在 SwiftUI 中的 ForEach 中使用 id 时如何为数组设置动画索引

将 struct 作为泛型类型传递并访问该泛型类型属性

为什么 switch 在 optional 中不接受 case nil?

如何在 Swift 中将 UILabel 居中?

如何在 GCD 中停止 DispatchWorkItem?

Swift 3:小数到 Int

swift 3 如何获取明天和昨天的日期(注意特殊情况)新月或新年

如何在 Swift 中从字符串创建类的实例