在Cooca应用程序中,MainMenu.xib是在标准模板中为您设置的。这个笔尖也已经与应用程序委托一起设置。在info.plist中,键“Main nib file bas ename”设置nib文件在启动时加载。在applicationDidFinish在可可应用程序中加载主窗口
我想在没有笔尖的情况下启动应用程序,我想要在应用程序的主代表的applicationDidFinishLaunching中加载MainMenu.xib。
可能吗?
在Cooca应用程序中,MainMenu.xib是在标准模板中为您设置的。这个笔尖也已经与应用程序委托一起设置。在info.plist中,键“Main nib file bas ename”设置nib文件在启动时加载。在applicationDidFinish在可可应用程序中加载主窗口
我想在没有笔尖的情况下启动应用程序,我想要在应用程序的主代表的applicationDidFinishLaunching中加载MainMenu.xib。
可能吗?
首先,注释掉NSApplicationMain支持文件 - > main.m. NSApplicationMain()加载Info.plist中提到的主要笔尖,所以请跳过它。相反,安装应用程序,并委托并运行应用程序:
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;
}
然后,在应用程序委托的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有一个如本例所示的窗口,那么它的“引用outlet”需要连接到File's Owner->窗口。
如果您从单一视图应用程序开始,请从MainMenu.xib删除App Delegate对象 - 否则xib将创建您的应用程序委托的第二个实例。如果您引用了像MYAppDelegate.managedObjectContext之类的东西,这可能会很糟糕。如果您需要绑定到应用程序委托,则可以使用delegate.managedObjectContext的键路径绑定到应用程序。
我为什么要这样做?因为有时我的应用程序会启动GUI,有时却不会。
这是可能的,但很少值得麻烦国际海事组织。如果你已经有了一个包,那么在包含一个小的nib文件(仅限菜单;没有窗口)方面花费很少。如果你想在启动后从一个单独的nib文件加载你的用户界面的其余部分,那很好。但我建议让MainMenu.nib加载并提供主菜单。 (你不清楚你想用你的方法解决什么问题。)
也就是说,Lap Cat写了一系列关于这个名为“工作没有笔尖”的文章,值得一读。你会想要最后一篇文章The Empire Strikes Back他包含他的nibless项目的链接。他的技术仍然在10.7。
应用程序的委托*在NIB中,所以你所描述的是不可能的。你想达到什么目的?也许还有另一种方式。 – 2012-01-03 06:13:49