当目标是 ios 11.0 或字母时在 Xcode 11.3 中访问 UIWindow 实例

Posted

技术标签:

【中文标题】当目标是 ios 11.0 或字母时在 Xcode 11.3 中访问 UIWindow 实例【英文标题】:Accessing UIWindow instance in Xcode 11.3 when target is ios 11.0 or letter 【发布时间】:2020-02-12 05:03:47 【问题描述】:

问题是我使用的是 Xcode 11,它具有新的 AppDelegate/SceneDelegate 设置。因此,UIWindow 为 nil,因此未设置新的 rootViewController。我知道在 ios 13 中,该窗口是在 SceneDelegate 中访问的,但该项目的目标是 iOS 11 或字母。SceneDelegate 类已由@available(iOS 13.0,*)进行。 如何从 appDelegate 访问 UIWindow? 我正在使用 Xcode 11.3 和 Swift 5.0。

【问题讨论】:

您可以将您的项目还原为 appdelegate 【参考方案1】:

这是我在项目中使用的扩展

extension UIWindow 
    static var key: UIWindow? 
        if #available(iOS 13, *) 
            return UIApplication.shared.windows.first  $0.isKeyWindow 
         else 
            return UIApplication.shared.keyWindow
        
    

这就是您使用此扩展程序的方式

if let getWindow = UIWindow.key 
    // use getWindow to perform action on window

【讨论】:

以上是关于当目标是 ios 11.0 或字母时在 Xcode 11.3 中访问 UIWindow 实例的主要内容,如果未能解决你的问题,请参考以下文章

更新 xcode 9 和 iOS 11.0 后有人遇到 UI 问题吗?

TapGesture 在 Xcode 11.0 Beta 中不起作用

ios8/xcode6.1:在情节提要中设置时在运行时忽略自定义字体

Xcode 9 + iOS 11.0 - Debug assertion with Metal renderer

Xcode 11.0 模拟器滑动手势不起作用

在“开始开发 iOS 应用程序 (Swift)”教程中,从 Xcode 11.0 开始,Hello World 屏幕出现在画布顶部,将其隐藏