重新显示我的主要Cocoa应用程序窗口

时间:2012-04-19 09:56:53

标签: objective-c macos cocoa nswindow

好吧,这看起来简单而愚蠢,这就是我的情景:

  • 应用程序窗口(只有一个主窗口)最小化
  • 用户点击停靠栏菜单上的内容
  • 我们想把那个主窗口带回来

简单?

不完全。

我尝试通过以下方式访问我的主窗口:

  • [[NSApplication sharedApplication] mainWindow]
  • [[NSApplication sharedApplication] windows]

然后发送makeKeyAndOrderFront:消息,但它只是不显示。

我甚至尝试过显示所有窗口(是的,它仍然被视为“窗口”我正在使用的一两张(隐藏)纸张...),但仍然没有。

你能提出一个方法,我可以最终展示那个窗口,而不必在任何地方设置一个出口吗?

我不知道;我可能太累了不知道,但这件事几乎让人神经紧张......

1 个答案:

答案 0 :(得分:6)

您可以取消最小化窗口:

if([aWindow isMiniaturized])
{
   [aWindow deminiaturize:self];
}

然而,问题是窗口在最小化时将失去主要状态,因此您需要一些其他方法来识别窗口。

为什么你不能使用插座?

您可以让应用程序取消最小化所有最小化的窗口,如下所示:

for(NSWindow* win in [NSApp windows])
{
    if([win isMiniaturized])
    {
        [win deminiaturize:self];
    }
}

当应用启动时,您可以存储对主窗口的引用并注册NSWindowDidMiniaturizeNotification。这将告诉您何时主窗口最小化,这也可能对您有帮助。