我有一个使用NSWindowController子类的简单Cocoa应用程序。在 Nib 中,我设置了:
我的NSWindowController子类的
我的NSWindowController子类的init方法被调用(我称为super),但无论如何我都不会调用windowDidLoad。
我肯定想念一些明显的东西,但是对于我的一生,我无法弄清楚它是什么。
最佳答案
您正在尝试通过在另一个 Nib 中实例化NSWindowController
的实例来创建它。但是,当您实例化nib文件中的对象时,可以通过调用-initWithCoder:
对其进行初始化。-initWithCoder:
不是NSWindowController
的指定初始值设定项,因此,您的NSWindowController
实例实际上不会加载其 Nib 。
不用通过将其放在Interface Builder中的NSWindowController
文件中来实例化MainMenu.xib
实例的方法,而是通过编程方式创建它:
在 AppDelegate.h 中:
@class YourWindowController;
@interface AppDelegate : NSObject
{
YourWindowController* winController;
}
@end
在 AppDelegate.m 中:
@implementation AppDelegate
- (void)applicationDidFinishLaunching:(NSNotification*)notification
{
winController = [[YourWindowController alloc] init];
[winController showWindow:self];
}
- (void)dealloc
{
[winController release];
[super dealloc];
}
@end
在 YourWindowController.m 中:
@implementation YourWindowController
- (id)init
{
self=[super initWithWindowNibName:@"YourWindowNibName"];
if(self)
{
//perform any initializations
}
return self;
}
@end
关于cocoa - NSWindowController windowDidLoad不被调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2695671/