Ios 不使用AppDelegate获取UIWindow

Ios 不使用AppDelegate获取UIWindow,ios,swift,Ios,Swift,我需要直接在窗口中添加一个视图。我可以通过UIApplication访问AppDelegate上的窗口对象来实现这一点。我打算使这段代码尽可能可重用,但这使得该方法毫无用处。如何在不使用AppDelegate的情况下以编程方式访问UIWindow 我正在用Swift编写代码,但Objective-C示例可能也会有所帮助。任何视图都会引用当前窗口 在UIViewController中: self.view.window 好吧,我自己想出来的。您可以这样访问它: var window : UIWi

我需要直接在窗口中添加一个视图。我可以通过UIApplication访问AppDelegate上的窗口对象来实现这一点。我打算使这段代码尽可能可重用,但这使得该方法毫无用处。如何在不使用AppDelegate的情况下以编程方式访问UIWindow


我正在用Swift编写代码,但Objective-C示例可能也会有所帮助。

任何视图都会引用当前窗口

在UIViewController中:

self.view.window

好吧,我自己想出来的。您可以这样访问它:

var window : UIWindow = UIApplication.sharedApplication().keyWindow
Swift 5:

var-window:UIWindow=UIApplication.shared.keyWindow
请注意,
keyWindow
在iOS 13.0中被弃用。 如果您的目标是iOS 13.0或更高版本,.

Swift 3版本:

let window :UIWindow = UIApplication.shared.keyWindow!

以下内容适用于Swift 4,并将安全地打开
ui窗口
,因此无需强制施力:

if let window = UIApplication.shared.keyWindow { 
    // Do stuff
}

您可以通过以下方式获得第一个窗口:

let window = UIApplication.shared.windows[0]

嗯,我有点不对劲。UIWindow没有名为addSubview的成员&UIWindow没有名为“center”的成员。注意:我在一个UIView上做这件事,当UIViewController调用它的方法时,它试图将自己添加到窗口中。欢迎使用stackoverflow。这篇文章质量很差,需要大幅度改进才能发挥作用。请问,你能扩展你的答案吗?这是不推荐的,你如何在swift 5中做到这一点?