在OSX上重新打开窗口的正确方法是什么?

时间:2013-08-01 04:58:41

标签: macos cocoa nswindow nsapplication

我有一个我在Xcode中创建的应用。它不是基于文档的。

如何制作,以便当用户点击说停靠图标时,窗口重新打开?我正在创建Xcode自动给我的笔尖。

我已尝试在我的应用代表的applicationShouldOpenUntitledFile:媒体资源上实施makeKeyAndVisible并致电window,但这会让应用程序的图标混乱。 (我想这与用作文档预览的图标有关。)

无论如何,我已经搜索了一些内容,并且大部分都找到了对Carbon API或基于文档的应用程序的引用。

窗口创建过程如何在NSApplicationMain和我的应用程序的nib文件之间工作,我该如何复制该过程,以及在哪里可以这样做?

1 个答案:

答案 0 :(得分:6)

通常,我发现使用NSWindowControllers可以简化Windows 处理。在您的情况下,您的App Delegate不会直接拥有该窗口,而是拥有拥有该窗口的NSWindowController

为此,您需要创建一个新的NSWindowController子类(使用用户界面的xib),并将您的窗口从MainMenu.xib迁移到新的WindowController.xib中。事情搞砸了,然后你就准备好了。 (另外,请确保您窗口中的“可见启动时”复选框取消选中

从您的app委托中,您只需创建一个新的窗口控制器实例(无论是以编程方式还是通过MainMenu.xib无关紧要),并在需要窗口时将其告诉-showWindow:显示(或成为关键字),-close当你希望它消失时。

对于点击Dock图标的响应,您要查找的<NSApplicationDelegate>方法为-applicationShouldHandleReopen:hasVisibleWindows: