NSWindow绑定加载事件以进行控制和逻辑初始化

时间:2015-11-02 14:49:36

标签: objective-c macos cocoa nswindow nswindowcontroller

我刚刚开始研究OSX应用程序,第一次是在objective-c中。我需要创建一个窗口,显示计算机上可用的所有网络接口。

到目前为止

  • 我有AppDelegate几乎没有任何作为
  • 我已将Main nib file base name设置为我的主窗口,这是一个xib,标题和实现文件
  • 我让我的xib窗口继承自我的班级,并使用右键单击拖动添加了我需要的插座(效果很好,我认为在此之前我是正确的)

问题

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

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

我的问题

是否需要NSWindowController加上NSWindow课程?我觉得单个窗口的文件太多了。我有xib和两个.h / .m文件......如果不需要,我怎样才能在窗口加载时得到通知?

1 个答案:

答案 0 :(得分:1)

您需要NSWindowController(s)与否的问题取决于您申请的复杂程度 如果您的应用只是一个使用单个窗口的小工具,您可能会在MainMenu.xib中设置您的UI并将其连接到AppDelegate中的某个IBOutlets

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

  

如果不需要,如何在窗口加载时收到通知?

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

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

此时窗口已满载

@property (weak) IBOutlet NSWindow *window;

应指向您的窗口实例。