gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 03:54:10 25 4
gpt4 key购买 nike

我使用 Xcode 模板创建了一个新的空白标准应用程序。删除了 MainMenu.xib 中的窗口,并使用 xib 创建了一个新的自定义 NSWindowController 子类。

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

然后我追加如下初始化函数:

- (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 和 Cocoa 的新手。所以我想我可能犯了一个我自己无法弄清楚的愚蠢错误。

更新:

这是我的项目源代码。请看看并帮助我弄清楚我的错误是什么。

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

最佳答案

在您的 init 方法中,我认为您必须先将 self 设置为 super init,然后再返回 self。

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

编辑:

尝试将 makeKeyAndOrderFront: 替换为 [windowController showWindow:self]

如果还是不行,检查你的窗口 Controller xib,确保文件所有者设置为 WYSunFlowerWindowController 并且 IBOutlet 窗口(在 NSWindowController 中声明)连接到窗口。

编辑 2:

在你的 Controller 中注释掉你的@property 和@synthesize 窗口是个诀窍。不要重新声明已经在父类(super class)中预定义的 get 和 setter。

关于objective-c - 如何使用 NSWindowController 在标准应用程序中显示窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12490064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com