在不使用AppDelegate的情况下获取UIWindow

时间:2014-10-17 14:15:34

标签: ios swift

我需要直接向窗口添加视图。我可以通过UIApplication访问AppDelegate上的窗口对象来完成此操作。我打算尽可能地使这些代码可重用,但这使得该方法无益。如何在不使用AppDelegate的情况下以编程方式访问UIWindow?

我在Swift中编码,但Objective-C示例也可能有用。

5 个答案:

答案 0 :(得分:7)

好的,我自己想出了这个。您可以像这样访问它:

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

答案 1 :(得分:6)

任何视图都有对当前窗口的引用。

在UIViewController中:

self.view.window

答案 2 :(得分:1)

Swift 3版

让窗口:UIWindow = UIApplication.shared.keyWindow!

答案 3 :(得分:1)

以下适用于Swift 4并将安全打开if let window = UIApplication.shared.keyWindow { // Do stuff } ,以便不需要强制转换:

{{1}}

答案 4 :(得分:0)

您将看到第一个窗口:

 select 
    Name, 
    counts
from 
(
    select 
        Name, 
        counts,
        rank() over(partition by Name order by counts desc) as rn
    from 
    (
        select 
            Name, 
            count(Case_Id) as counts
        from CTD a
        left join Agent_Table b 
        on a.Agent_ID = b.Agent_ID
        group by 
            Name
    ) subq
) sub
where rn <= 2;