gpt4 book ai didi

cocoa - Mac 开发中菜单栏应用程序的窗口管理如何工作?

转载 作者:行者123 更新时间:2023-12-03 17:43:10 25 4
gpt4 key购买 nike

作为序言,我会说这是我的第一个 Mac 应用程序,尽管我构建 iO 应用程序已经有一段时间了。

我有一个菜单栏应用程序(系统托盘应用程序),我的意思是我有 this .

我现在想要显示我在 Interface Builder 中创建的 NSWindow,因此我创建了一个派生自 NSWindow 的类。让我的类(class)成为 Window 的委托(delegate),并从应用程序委托(delegate)中执行以下操作:

MyClass *myClass = [[MyClass alloc] init];
[myClass display];
[myClass center];
[NSApp activateIgnoringOtherApps:YES];
[viewer makeKeyAndOrderFront:nil];

这似乎显示了一个没有标准窗口按钮(最小化、最大化、关闭)的窗口,而不是我定义的窗口。

这是显示窗口的正确方式吗?应该如何定义窗 Eloquent 能显示我设计的界面?

在 Windows 窗体编程中,这将是:

Form myForm = new Form();
myForm.Show();

最佳答案

除非您想覆盖窗口的行为,否则您很少需要子类化 NSWindow。更典型的使用场景是使用 NSWindowController 的实例或 NSWindowController 的子类来管理窗口,方法是在 Interface Builder 中将该类设置为文件所有者。完成此操作后,要获取窗口的实例,请使用:

NSWindowController *wc = [[NSWindowController alloc] initWithWindowNibName:@"NIBNAMEHERE"];
[wc showWindow:nil];

应用程序中的另一种选择是将 NSWindow IBOutlet 添加到应用程序委托(delegate)中,并使用以下命令在应用程序委托(delegate)中加载窗口:

[NSBundle loadNibNamed:@"NIBFILENAME" owner:self];
[_window makeKeyAndOrderFront];

关于cocoa - Mac 开发中菜单栏应用程序的窗口管理如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6718401/

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