Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 在应用程序中加载主窗口在Cocoa应用程序中启动_Macos_Cocoa - Fatal编程技术网

Macos 在应用程序中加载主窗口在Cocoa应用程序中启动

Macos 在应用程序中加载主窗口在Cocoa应用程序中启动,macos,cocoa,Macos,Cocoa,在Cooca应用程序中,MainMenu.xib是在标准模板中为您设置的。此nib也已使用应用程序委托进行了设置。在info.plist中,键“Main nib file bas ename”设置要在启动时加载的nib文件 如果可能,我希望应用程序在没有nib的情况下启动,我希望在应用程序的主委托中的ApplicationIDFinishLaunching处加载main menu.xib 有可能吗?这是可能的,但在我看来很少值得麻烦。如果您已经有一个捆绑包,那么包含一个小的nib文件(仅菜单;没

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

如果可能,我希望应用程序在没有nib的情况下启动,我希望在应用程序的主委托中的ApplicationIDFinishLaunching处加载main menu.xib


有可能吗?

这是可能的,但在我看来很少值得麻烦。如果您已经有一个捆绑包,那么包含一个小的nib文件(仅菜单;没有窗口)的成本很低。如果您想在启动后从一个单独的nib文件加载UI的其余部分,这很好。但我建议允许MainMenu.nib加载并提供主菜单。(你不清楚你想用你的方法解决什么问题。)


也就是说,他写了一系列文章,名为“无笔尖工作”,值得一读。你会想看最后一篇文章,他在文章中包含了他的nibless项目的链接。他的技术在10.7中仍然有效。

首先,在supportingfiles->main.m中注释掉NSApplicationMain。NSApplicationMain()加载Info.plist中提到的主nib,因此跳过它。相反,请设置应用程序并委派并运行应用程序:

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;
}
然后,在应用程序代理的ApplicationIDFinishLaunching:函数中,调用类似于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
}
main menu.xib文件的所有者自定义类应从应用程序切换到MYCustomWindowController

如果MainMenu.xib有一个类似于本例的窗口,那么它的“引用出口”需要连接到文件的所有者->窗口

如果您使用单视图应用程序启动,请从main menu.xib中删除App Delegate对象——否则,xib将创建App Delegate的第二个实例。如果您正在引用MYAppDelegate.managedObjectContext之类的内容,这可能会很糟糕。如果需要绑定到应用程序委托,可以使用delegate.managedObjectContext键路径绑定到应用程序


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

应用程序的委托位于NIB内,因此您所描述的内容是不可能的。你想完成什么?也许还有别的办法。