mor*_*wan 5 xcode cocoa objective-c nib nswindowcontroller
我使用Xcode模板创建了一个新的空白标准应用程序.删除了MainMenu.xib中的窗口,我用xib创建了一个新的自定义NSWindowController子类.
它们被命名为"WYSunFlowerWindowController.h"和"WYSunFlowerWindowController.m".
然后我添加init函数,如下所示:
- (id)init
{
NSLog(@"init()");
return [super initWithWindowNibName:@"WYSunFlowerWindowController" owner:self];
}
Run Code Online (Sandbox Code Playgroud)
我的WYAppDelegate.m文件如下所示:
static WYSunFlowerMainWindowController* windowController = nil;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
// Insert code here to initialize your application
if (windowController == nil) {
windowController = [[WYSunFlowerMainWindowController alloc] init];
}
[[windowController window] makeKeyAndOrderFront:windowController];
}
Run Code Online (Sandbox Code Playgroud)
我有问题,在我启动应用程序后,窗口无法自我显示.谁能告诉我为什么?我的代码有什么问题吗?
我是Objective-C和可可的新手.所以我想我可能犯了一个愚蠢的错误,我自己无法弄明白.
更新:
这是我的项目来源.请看看,帮我弄清楚我的错误是什么.
在你的 init 方法中,我认为你必须先将 self 设置为 super init,然后再返回 self。
-(id)init
{
NSLog (@"init()");
self = [super initWithWindowNibName:@"WYSunFlowerWindowController" owners:self];
return self;
}
Run Code Online (Sandbox Code Playgroud)
编辑:
尝试替换makeKeyAndOrderFront:为[windowController showWindow:self]
然后,如果仍然不起作用,请检查您的窗口控制器 xib,确保文件所有者设置为 WYSunFlowerWindowController 并且 IBOutlet 窗口(在 NSWindowController 中声明)已连接到该窗口。
编辑2:
在控制器中注释掉 @property 和 @synthesize 窗口就是诀窍。不要重新声明超类中已预定义的 get 和 setter。
| 归档时间: |
|
| 查看次数: |
12118 次 |
| 最近记录: |