我正面临这个奇怪的问题而且我不确定我哪里出错了.
情况:
我有一个MainWindowController类,它将加载要显示的正确的nib.我创建了一个对象并将其更改为IB中的MainWindowController类,并将其与"MainWindowView"笔尖一起使用.
因此,基本上笔尖"MainWindowView"具有自定义视图和侧面的几个按钮,以便用户可以选择要加载的视图,并且它将加载其他相应的笔尖.我在IB中启动时隐藏了mainmenu,所以它只加载MainWindowView和其他nib文件.
然而,在调试时,当我在MainWindowController的awakeFromNib上放置NSLog时,我在控制台中看到它被调用了两次.
在我的项目中,我有一个startupController类和MainMenu.xib以及以下代码.
startUpController.h:
#import <Cocoa/Cocoa.h>
#import "MainWindowController.h"
@interface startupController : NSObject {
MainWindowController *myWindowController;
}
@end
Run Code Online (Sandbox Code Playgroud)
startUpController.m:
#import "startupController.h"
@implementation startupController
-(void)awakeFromNib {
[super init];
if(myWindowController == nil)
myWindowController = [[MainWindowController alloc] initWithWindowNibName:@"MainWindowView"];
[myWindowController showWindow:self];
}
@end
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏.谢谢.
听起来你正在创建两个MainWindowController对象,因此将为每个对象调用一次awakeFromNib.
startupContoller方法中的awakeFromNib正在创建一个MainWindowController对象并使用MainWindowView nib初始化它.如果您还向该nib添加了一个对象并将其类型设置为MainWindowController,则在加载该nib时将创建另一个MainWindowController对象.
您应该从MainWindowView nib中删除MainWindowController对象,而是将File的Owner对象的类型设置为MainWindowController.(MainWindowController应该是NSWindowController的子类)您连接到您创建的对象的任何连接都应该连接到File的所有者.
此外,您不应该在awakeFromNib中调用[super init].您应该只在init方法中调用[super init].
| 归档时间: |
|
| 查看次数: |
2359 次 |
| 最近记录: |