我有一个单窗口 MacOS X 应用程序。
我在理解如何连接 MainMenu.xib NIB 文件的某些部分时遇到了一些问题。
我需要做的是能够在 MainMenu 的(void)windowDidLoad
功能中做一些事情。我只是不知道如何将 MainMenu.xib 文件连接到 .m 文件。
我在 NIB 文件中创建了一个 NSObject 文件,然后我将其连接到一个名为 MainController 的文件,并在那里做了很多有效的事情。
编辑
好的,澄清我的问题:
假设我创建了一个新项目(我使用的是 Xcode 4.3.2)。
我选择 File > New > Project,然后选择 Mac OS X > Application > Cocoa Application
我按下一步,将 Product Name 设置为Awesomesauce,取消选中所有复选框,按 Next 最后选择一个文件夹来存储我的项目。
我现在有 3 个文件AppDelegate.h
,AppDelegate.m
并且MainMenu.xib
(我认为我不需要考虑的 Supporting Files 文件夹中还有一些东西)。
我想要一个NSWindowController
可以连接到的文件MainMenu.xib
。我创建了一个新文件(Objective-c Class > NSWindowController)并将其命名为MainMenuController
。
现在我打开 MainMenu.xib,在 Placeholders 下选择 File's Owner,在 Identity Inspector 下,我将 Custom Class > Class 设置为MainMenuController
.
右击 File's Owner 我在window
和之间创建了一个连接Window - Awesomesauce
。
我还添加到 MainMenuController.h 并在和<NSApplicationDelegate>
之间创建连接Window - Awesomesauce delegate
File's Owner
此时我的 MainMenuController 看起来像这样:
@implementation MainMenuController
- (id)initWithWindow:(NSWindow *)window
{
self = [super initWithWindow:window];
if (self) {
NSLog(@"Initializing MainMenuController");
}
return self;
}
- (void)windowDidLoad
{
[super windowDidLoad];
NSLog(@"Window did load");
}
- (void)windowWillLoad{
NSLog(@"Window will load");
}
@end
当我运行我的应用程序时,我得到了 Awesomesauce 窗口,但没有任何 NSLog 记录任何内容。这包括 init 方法中的 NSLog 。
我究竟做错了什么?