gpt4 book ai didi

cocoa - NSWindowController windowDidLoad 未调用

转载 作者:行者123 更新时间:2023-12-03 16:04:19 25 4
gpt4 key购买 nike

我有一个使用 NSWindowController 子类的简单 Cocoa 应用程序。在我设置的 Nib 中:

  • 将所有者的类文件保存到我的 NSWindowController 子类
  • 文件所有者到 Nib 中主 NSWindow 的“窗口”导出。

我的 NSWindowController 子类的 init 方法被调用(我称为 super),但无论我做什么 windowDidLoad 都不会被调用。

我一定错过了一些明显的东西,但我一生都无法弄清楚它是什么。

最佳答案

您正在尝试通过在另一个 Nib 中实例化 NSWindowController 来创建它的实例。但是,当您在 nib 文件中实例化对象时,它是通过调用 -initWithCoder: 来初始化的。

-initWithCoder: 不是 NSWindowController 的指定初始化程序,因此您的 NSWindowController 实例从未真正加载其 Nib 。

不要通过将 NSWindowController 实例放置在 Interface Builder 中的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com