我面临着这个奇怪的问题,我不确定我哪里出了问题。
情况:
我有一个 MainWindowController 类,它将加载要显示的正确笔尖。
我创建了一个对象并将其更改为 IB 中的 MainWindowController 类,并将其与“MainWindowView”笔尖放在一起。
因此,基本上,笔尖“MainWindowView”具有自定义视图和侧面的一些按钮,以便用户可以选择要加载的视图,并且它将加载其他相应的笔尖。我在 IB 中启动期间隐藏了主菜单,因此它仅加载 MainWindowView 和其他 nib 文件。
然而,在调试时,当我将 NSLog 放在 MainWindowController 的 awakeFromNib 上时,我看到在控制台中它被调用了两次。
在我的项目中,我有一个startupController类和MainMenu.xib,代码如下。
启动控制器.h:
#import <Cocoa/Cocoa.h>
#import "MainWindowController.h"
@interface startupController : NSObject {
MainWindowController *myWindowController;
}
@end
启动控制器.m:
#import "startupController.h"
@implementation startupController
-(void)awakeFromNib {
[super init];
if(myWindowController == nil)
myWindowController = [[MainWindowController alloc] initWithWindowNibName:@"MainWindowView"];
[myWindowController showWindow:self];
}
@end
任何帮助表示赞赏。谢谢。
听起来您正在创建两个 MainWindowController 对象,因此 awakeFromNib 将为每个对象调用一次。
startupContoller 方法中的 awakeFromNib 正在创建一个 MainWindowController 对象并使用 MainWindowView nib 对其进行初始化。如果您还向该笔尖添加了一个对象并将其类型设置为 MainWindowController,则加载笔尖时将创建另一个 MainWindowController 对象。
您应该从 MainWindowView 笔尖中删除 MainWindowController 对象,并将 File's Owner 对象的类型设置为 MainWindowController。 (MainWindowController 应该是 NSWindowController 的子类)您连接到您创建的对象的任何连接都应该连接到文件的所有者。
另外,您不应该在 awakeFromNib 中调用 [super init]。您应该只在 init 方法中调用 [super init]。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)