【问题标题】:What's the correct way to reopen a window on OSX?在 OSX 上重新打开窗口的正确方法是什么?
【发布时间】:2013-08-01 13:12:13
【问题描述】:

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

如何使当用户单击停靠图标时,窗口重新打开?我正在用 Xcode 自动给我的 nib 创建所有东西。

我尝试在我的应用程序委托的window 属性上实现applicationShouldOpenUntitledFile: 并调用makeKeyAndVisible,但这与应用程序的图标相混淆。 (我想这与用作文档预览的图标有关。)

不管怎样,我用 google 搜索了一下,大部分都找到了对 Carbon API 或基于文档的应用程序的引用。

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

【问题讨论】:

标签: macos cocoa nswindow nsapplication


【解决方案1】:

一般来说,我发现使用NSWindowControllers 可以让处理windows 更加简单。在您的情况下,您的 App Delegate 不会直接拥有该窗口,而是拥有拥有该窗口的 NSWindowController

为此,您需要创建一个新的NSWindowController 子类(使用 xib 作为用户界面),然后将您的窗口从 MainMenu.xib 迁移到新的 WindowController.xib。把东西连接起来,然后你就可以开始了。 (另外,请确保窗口上的“启动时可见”复选框未选中

然后,您将通过您的应用委托创建窗口控制器的新实例(无论是通过编程方式还是通过 MainMenu.xib 都无关紧要),并在您希望窗口显示时告诉-showWindow:(或成为关键),并在您希望它消失时-close

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

【讨论】:

  • 这很容易。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-08
  • 2010-11-19
  • 2019-03-04
  • 2019-02-17
相关资源
最近更新 更多