我有一个在 Xcode 中创建的应用程序。它不是基于文档的。
如何才能使当用户单击停靠图标时,窗口重新打开?我正在用 Xcode 自动给我的 Nib 创建所有内容。
我尝试实现 applicationShouldOpenUntitledFile:
并在应用程序委托(delegate)的 window
属性上调用 makeKeyAndVisible
,但这会与应用程序的图标混淆。 (我猜这与用作文档预览的图标有关。)
无论如何,我在谷歌上搜索了一下,大部分找到了对 Carbon API 或基于文档的应用程序的引用。
窗口创建过程如何在 NSApplicationMain 和我的应用程序的 nib 文件之间工作,如何复制该过程,以及在哪里可以这样做?
最佳答案
一般来说,我发现与 NSWindowControllers
一起工作使处理窗口变得更加简单。在您的情况下,您的应用程序委托(delegate)不会直接拥有该窗口,而是拥有 NSWindowController
拥有该窗口。
为此,您需要创建一个新的 NSWindowController
子类(带有用于用户界面的 xib),并将窗口从 MainMenu.xib 迁移到新的 WindowController.xib。把事情搞定,然后就可以开始了。 (另外,请确保窗口上的“启动时可见”复选框未选中)
从您的应用程序委托(delegate)中,您只需创建一个窗口 Controller 的新实例(无论是通过编程方式还是通过 MainMenu.xib 都没关系),并告诉它 -showWindow:
当您希望窗口显示(或成为关键)时,并且 -close
当你想让它消失时。
对于响应单击 Dock 图标,<NSApplicationDelegate>
您正在寻找的方法是 -applicationShouldHandleReopen:hasVisibleWindows:
.
关于macos - 在 OSX 上重新打开窗口的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17985532/