【问题标题】:In a Cocoa OS X app, how can I make two windows open at startup?在 Cocoa OS X 应用程序中,如何在启动时打开两个窗口?
【发布时间】:2012-07-19 20:51:38
【问题描述】:
我的 OS X 应用有两个窗口。我将一个放在 MainMenu.xib 中,另一个放在 SecondaryWindow.xib 中。
当我运行我的应用程序时,会显示 MainMenu.xib 中的窗口。我还希望 SecondaryWindow.xib 中的第二个窗口在启动时显示。我如何实现这一目标?为第二个窗口使用单独的 xib 文件是个好主意吗?
【问题讨论】:
-
我相信您可以通过编程方式完成。在您的 awakeFromNib 委托方法中添加来自 this answer 的两行。
标签:
macos
cocoa
interface-builder
【解决方案1】:
如果您想在没有一行代码的情况下执行此操作,请将 NSWindowController 对象添加到 MainMenu.xib 并将第二个 xib 的名称写入它的属性。加载 MainMenu.xib 时,将创建此窗口控制器并加载第二个 xib,如果第二个窗口配置为在启动时可见,则会弹出第二个窗口。
或者以编程方式执行,例如applicationDidFinishLaunching: 或 awakeFromNib:。
除了作为将 UI 分解为独立模块的工具外,单独的 xib 还可以卸载其中的一些并节省内存(例如,当窗口关闭时)或多次加载。
在您的情况下,如果两个窗口都必须始终在内存中,您可以安全地将它们保存在同一个 xib 中。