NSWindow 绑定加载事件用于控件和逻辑初始化

NSWindow bind load event for control and logic initialization

我刚开始开发 OSX 应用程序,第一次是在 objective-c。我需要制作一个 window 来显示计算机上所有可用的网络接口。

到目前为止

问题

我似乎无法覆盖或绑定 window 的加载事件,我想在我的标签中加载文本。

我看到有些人使用 NSWindowController,但我认为我不需要这个。

我的问题

是否需要 NSWindowController 加上 NSWindow class?我觉得单个 window 的文件太多了。我有 xib 和两个 .h/.m 文件...如果不需要,我如何在 window 加载时收到通知?

您是否需要 NSWindowController(s) 的问题取决于您的应用程序的复杂性。
如果您的应用程序只是一个使用单个 window 的小型实用程序,您可能会在 MainMenu.xib 中设置 UI 并将其连接到 AppDelegate 中的某些 IBOutlets

但是当您的应用变得更加复杂时,上述方法很快就会变得混乱。为了驯服这种复杂性,您可以创建专用的 NSWindowController 类(例如每个 window 一个)。这些 window 控制器可以管理子级 NSViewControllers 的层次结构,以进一步分解您的复杂性。

If it's not required, how can I get notified when the window loads?

默认的 Xcode 模板应该已经创建了一个 AppDelegate.m 文件。您可以在

中添加代码来初始化您的 UI
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification

此时window已经完全加载并且

@property (weak) IBOutlet NSWindow *window;

应该指向您的 window 实例。