在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