objective-c – 如何使用NSWindowController在标准应用程序中显示窗口?

objective-c – 如何使用NSWindowController在标准应用程序中显示窗口?,第1张

概述我使用 Xcode模板创建了一个新的空白标准应用程序.删除了MainMenu.xib中的窗口,我用xib创建了一个新的自定义NSWindowController子类. 它们被命名为“WYSunFlowerWindowController.h”和“WYSunFlowerWindowController.m”. 然后我添加init函数,如下所示: - (id)init{ NSLog(@"in 我使用 Xcode模板创建了一个新的空白标准应用程序.删除了MainMenu.xib中的窗口,我用xib创建了一个新的自定义NSWindowController子类.

它们被命名为“WYSunFlowerWindowController.h”和“WYSunFlowerWindowController.m”.

然后我添加init函数,如下所示:

- (ID)init{    NSLog(@"init()");    return [super initWithWindowNibname:@"WYSunFlowerWindowController" owner:self];}

我的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];}

我有问题,在我启动应用程序后,窗口无法自我显示.谁能告诉我为什么?我的代码有什么问题吗?

我是Objective-C和可可的新手.所以我想我可能犯了一个愚蠢的错误,我自己无法弄明白.

更新:

这是我的项目来源.请看看,帮我弄清楚我的错误是什么.

https://dl.dropbox.com/u/3193707/SunFlower.zip

解决方法 在你的init方法中,我认为你必须在返回self之前先将self设置为super init.

-(ID)init{    NSLog (@"init()");    self = [super initWithWindowNibname:@"WYSunFlowerWindowController" owners:self];    return self;}

编辑:

尝试使用[windowController showWindow:self]替换makeKeyAndOrderFront:

然后,如果仍然不起作用,请检查窗口控制器xib,确保文件所有者设置为WYSunFlowerWindowController,并且IBOutlet窗口(在NSWindowController中声明)连接到窗口.

编辑2:

在你的控制器中注释掉你的@property和@synthesize窗口是个窍门.不要重新声明已在超类中预定义的get和setter.

总结

以上是内存溢出为你收集整理的objective-c – 如何使用NSWindowController在标准应用程序中显示窗口?全部内容,希望文章能够帮你解决objective-c – 如何使用NSWindowController在标准应用程序中显示窗口?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1010077.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存