2

我正在编写一个应用程序启动时显示主窗口的应用程序。当窗口关闭时,我希望应用程序继续运行(使用菜单栏菜单),如果用户再次单击停靠图标,我希望再次显示主窗口。

我已经完成了大约 90% 的路程:在使用 Cmd-W 关闭主窗口后,我的应用程序继续正常运行,并且由于未选中“关闭时释放”,因此窗口可能是 [makeKeyAndOrderFront:]-ed 来显示它再次单击停靠图标时。

这个难题中唯一缺少的部分是拦截实际的停靠图标点击。

关于这个主题的其他线程建议在窗口控制器中实现 applicationShouldHandleReopen:hasVisibleWindows: 或 applicationShouldOpenUntitledFile: 。我都做过,没有一个被叫到。

还有其他想法吗?

4

2 回答 2

2

关于这个主题的其他线程建议在窗口控制器中实现 applicationShouldHandleReopen:hasVisibleWindows: 或 applicationShouldOpenUntitledFile: 。

仅当窗口控制器是应用程序的委托时才如此。这是应用程序向其发送这些消息的对象。

不过,我不会让窗口控制器成为应用程序的代表。我通常使它们成为两个独立的对象。将一个对象专门设置为应用程序的委托,当该对象接收到相关委托消息时,向您的窗口控制器发送一条消息,告诉它做它需要做的任何事情。

实际上,我通常在单窗口应用程序中所做的就是让应用程序的委托创建并拥有窗口控制器。您可以通过丢弃 WC 来响应窗口关闭,并通过检查您是否有 WC 并创建一个(从而重新打开窗口)如果没有来响应重新打开。

于 2012-09-29T07:03:43.453 回答
0

[NSApp setDelegate:self];中使用awakeFromNib

于 2012-09-29T06:00:32.197 回答