Objective c OSX应用程序中未调用WindowControllerdLoadNib
我注意到我的OSX应用程序(基于文档)有一种奇怪的行为,我觉得我在这里做错了什么 当我从Xcode运行我的应用程序时,它运行得很好,一切正常。 如果我按command+Q退出应用程序,一切正常 当我通过按Xcode中的停止按钮退出应用程序时,应用程序会像正常情况一样停止,但当我下次运行时,我的WindowControllerdLoadNib不会被调用,直到我在dock菜单中单击我的应用程序图标(虽然应用程序正在运行,但我已签入活动监视器) 文件.mObjective c OSX应用程序中未调用WindowControllerdLoadNib,objective-c,macos,cocoa,Objective C,Macos,Cocoa,我注意到我的OSX应用程序(基于文档)有一种奇怪的行为,我觉得我在这里做错了什么 当我从Xcode运行我的应用程序时,它运行得很好,一切正常。 如果我按command+Q退出应用程序,一切正常 当我通过按Xcode中的停止按钮退出应用程序时,应用程序会像正常情况一样停止,但当我下次运行时,我的WindowControllerdLoadNib不会被调用,直到我在dock菜单中单击我的应用程序图标(虽然应用程序正在运行,但我已签入活动监视器) 文件.m - (NSString *)windowNib
- (NSString *)windowNibName
{
return @"Document";
}
- (void)windowControllerDidLoadNib:(NSWindowController *)windowController
{
[super windowControllerDidLoadNib:windowController];
}
我真的对这种行为感到困惑,我不知道我做错了什么,也不知道这到底是怎么回事
非常感谢您提供的任何帮助只要您需要调用下面的documentcontroller方法来加载nib方法
NSDocumentController * docC=
[[yourDocumentCont alloc]init];
[docC openDocument:self]
WindowControllerdLoadNib在需要窗口控制器时被调用。当您单击dock图标时,它将打开一个新文档,或创建一个新文档,这是一种系统样式。应用程序在后台时不需要窗口,所以我认为没有问题。只有在
...
[self windowDidLoad]
if ([self owner] != self) {
if ([self respondsToSelector:@selector(windowControllerDidLoadNib:)]) {
[[self owner] windowControllerDidLoadNib:self];
}
}
...
如果需要此行为,只需将此代码添加到NSWindowController子类中
- (void)windowDidLoad {
[super windowDidLoad];
if ([self owner] == self && [self document]) {
if ([[self document] respondsToSelector:@selector(windowControllerDidLoadNib:)]) {
[[self document] windowControllerDidLoadNib:self];
}
}
}
在应用程序中显示代码delegateNSDocument没有windowDidLoad…我不太明白你的建议HK那么无论你在哪里初始化documentcontroller,你都需要调用这些方法openDocument