gpt4 book ai didi

cocoa - 如何激活窗口?

转载 作者:行者123 更新时间:2023-12-03 17:42:57 24 4
gpt4 key购买 nike

虽然我搜索并尝试了很多,但我无法激活第二个窗口。

我用来在主窗口激活时显示另一个窗口的代码:

preferencesWindowController = (PreferencesWindowController*)[[NSWindowController alloc] initWithWindowNibName: @"Preferences"];
[preferencesWindowController showWindow: preferencesWindowController];
[[preferencesWindowController window] orderFrontRegardless];
[[preferencesWindowController window] makeKeyAndOrderFront: preferencesWindowController];
[NSApp activateIgnoringOtherApps:YES];
<小时/>

尝试调试器后,我发现 [preferencesWindowController window] 为零

preferencesWindowController = (PreferencesWindowController*)[[NSWindowController alloc] initWithWindowNibName: @"Preferences"];
[preferencesWindowController showWindow: self];
NSWindow* window = [preferencesWindowController window]; //---> nil

为什么为零?

<小时/>

nib 文件包含 Window 和 PreferencesWindowController。

<小时/>

抱歉,我用错了多 Nib 。我按照这个例子并让它工作:http://maestric.com/doc/mac/cocoa/multiple_nibs 。不是将窗口 Controller 添加到 nib,而是将文件的所有者类设置为窗口 Controller 。

最佳答案

这段代码是错误的:

preferencesWindowController = (PreferencesWindowController*)[[NSWindowController alloc] initWithWindowNibName: @"Preferences"];

将结果转换为 PreferencesWindowController 不会更改所创建对象的类型。您需要创建正确类型的对象:

preferencesWindowController = [[PreferencesWindowController alloc] initWithWindowNibName: @"Preferences"];

此外,请确保您实际上已将文件所有者的窗口 socket 连接到 Nib 中的窗口。

关于cocoa - 如何激活窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055120/

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