gpt4 book ai didi

macos - 在 Cocoa 应用程序中的 applicationDidFinishLaunching 处加载主窗口

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

在 Cooca 应用程序中,MainMenu.xib 是在标准模板中为您设置的。该 Nib 也已通过应用程序委托(delegate)进行了设置。在 info.plist 中,键“Main nib file bas ename”设置启动时加载的 nib 文件。

我希望应用程序在没有 Nib 的情况下启动(如果可能的话),我想在应用程序的主委托(delegate)中的 applicationDidFinishLaunching 处加载 MainMenu.xib。

可能吗?

最佳答案

首先,在支持文件->main.m中注释掉NSApplicationMain。 NSApplicationMain() 加载 Info.plist 中提到的主 Nib ,所以跳过它。相反,设置应用程序并委托(delegate)并运行应用程序:

int main(int argc, const char * argv[])
{
//return NSApplicationMain(argc, argv);

@autoreleasepool {
NSApplication * application = [NSApplication sharedApplication];
MYAppDelegate* appDelegate = [[MYAppDelegate alloc] init];

[application setDelegate:appDelegate];
[application run];
}

return EXIT_SUCCESS;
}

然后,在应用程序委托(delegate)的 applicationDidFinishLaunching: 函数中,调用类似于 createMainWindow 的内容:

- (void)createMainWindow
{
self.wincon = [[MYCustomWindowController alloc] initWithWindowNibName:@"MainMenu"];
self.window = self.wincon.window; // window property in appdelegate created for single-view app
// Also had to connect About: to application's orderFrontStandardAboutPanel
}

MainMenu.xib 的文件所有者自定义类应从应用程序切换到 MYCustomWindowController。

如果 MainMenu.xib 有一个像本示例中那样的窗口,则它的“引用导出”需要连接到文件所有者->窗口。

如果您从单个 View 应用程序开始,请从 MainMenu.xib 中删除 App Delegate 对象 - 否则 xib 将创建您的应用程序委托(delegate)的第二个实例。如果您引用诸如 MYAppDelegate.managedObjectContext 之类的内容,这可能会很糟糕。如果需要绑定(bind)到应用程序委托(delegate),可以通过delegate.managedObjectContext的关键路径绑定(bind)到应用程序。

我为什么要这么做?因为有时我的应用程序会使用 GUI 启动,有时则不会。

关于macos - 在 Cocoa 应用程序中的 applicationDidFinishLaunching 处加载主窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8708207/

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