获取应用程序的主窗口

Posted

技术标签:

【中文标题】获取应用程序的主窗口【英文标题】:Get Application's main window 【发布时间】:2013-07-24 17:40:43 【问题描述】:

UIApplication 有一个方法keyWindow,但是如果正在显示警报视图,那么这将返回警报视图的窗口,而不是应用程序的主窗口。

如何获取应用的主窗口?

【问题讨论】:

你能详细说明你在尝试什么吗..? 看看这个问题可能对你有帮助:- ***.com/questions/7871241/… 【参考方案1】:

UIApplicationDelegate 通常引用“主窗口”:

[[[UIApplication sharedApplication] delegate] window];

此外,UIApplication 有一个窗口数组 [[UIApplication sharedApplication] windows]

请参阅UIApplication Class Reference。

【讨论】:

这对代表来说是可选的,不是吗?我希望有一种更“具体”的方式 [[[UIApplication shareApplication] delegate] window] -- 工作正常。【参考方案2】:

我不是 100% 确定这在每种情况下都有效,但这应该有效:

UIWindow *mainWindow = [UIApplication sharedApplication].windows[0];

窗口从后往前排列,因此主窗口应始终位于索引 0 处。

【讨论】:

如果没有窗口,您应该调用[[[UIApplication sharedApplication] windows] firstObject] 以避免出现越界异常(并非永远不会有任何窗口,但避免这些是一个好习惯【参考方案3】:

Swift 3.0 版本的rmaddy's answer:

let window = UIApplication.shared.windows.first

我还应该补充一点,由于 ios 8.0 UIAlertController 已取代 UIAlertView 并且作为视图控制器,您可能不再面临创建新窗口的问题。

【讨论】:

【参考方案4】:
UIApplication *application = [UIApplication sharedInstance];
NSarray *appWindows = [NSArray arrayWithArray:application.windows];
UIWindow *mainWindow = [appWindows objectAtIndex:0];

我不确定,但这可能会有所帮助。

【讨论】:

【参考方案5】:

在斯威夫特中:

UIApplication.sharedApplication().delegate?.window

【讨论】:

【参考方案6】:

对我来说,我展示的是popViewController

self.presentViewController(popViewController, animated: true, completion: nil)

然后在这个 popViewController 的viewDidLoad()我正在添加一个子视图,这会导致控制台中的错误和显示错误。所以我必须找到另一种解决方案来让它发挥作用。希望这会有所帮助。

【讨论】:

【参考方案7】:

斯威夫特 3

    if let window = NSApplication.shared().windows.first 
        // you can now modify window attributes
    

【讨论】:

他说的是UIApplication而不是NSApplication,它被标记为iOS 如果每次发生这种情况时我都有一美元(人们用 Cocoa Touch 回答 Cocoa 问题),我会成为一个有钱人。 :) 让泰德松懈一些。 :)【参考方案8】:

斯威夫特 3

class func sharedInstance() -> AppDelegate
        return UIApplication.shared.delegate as! AppDelegate
    

【讨论】:

以上是关于获取应用程序的主窗口的主要内容,如果未能解决你的问题,请参考以下文章

Qt 中的主应用程序窗口和对话交互

单击时重绘可可应用程序的主窗口

将应用程序的主窗口 GUI 布局更改为代码

C#获取当前窗体句柄及该窗体里的信息

引用 C# 中的主线程

状态消息损坏了我的 iPhone 应用程序中的主窗口