我关闭的NSWindow在哪里?

时间:2018-03-07 16:09:26

标签: objective-c macos cocoa nswindow

我有一个Application委托,它持有对NSWindow的引用,程序(到目前为止的小测试程序)通常使用主菜单和窗口中的视图。

然而,我发现如果我关闭持有视图的窗口它虽然程序仍然在运行但它已经消失了。至于我可以看到窗口引用不是nil但是如何恢复它以便它可见并再次显示在Windows菜单下?

该程序不是基于文档的。所有操作都在相关窗口中执行。

我在MainMenu.xib中创建了一个由Xcode自动创建的窗口(这是在Xcode7或8中,但现在我升级到了9)。

我是Mac上的Windows处理新手所以我知道这是一个非常基本的问题,但我完全被困在这里。有一个应该保留所有功能的窗口消失而用户无法恢复它是不好的我相信。

1 个答案:

答案 0 :(得分:3)

如果你有对NSWindow的引用,你只需要显示它。例如:

[window makeKeyAndOrderFront:self];

但是如果用户关闭了应用程序的单个窗口,那么问题是:用户将如何触发该代码?最简单的答案是用户将点击停靠栏上的应用程序图标。要处理该单击,请在您的app delegate上实现以下方法。

- (BOOL)applicationShouldHandleReopen:(NSApplication *)sender hasVisibleWindows:(BOOL)hasVisibleWindows
{
     if (hasVisibleWindows) {
         return YES;
     }
     [window makeKeyAndOrderFront:self];
     return NO;
}