我只是希望能够以编程方式创建我的程序。所以我转到File > New > Project
并选择Cocoa Application
,并确保"使用故事板"没有在向导的下一步检查。它给我的项目中有一个MainMenu.xib
文件。我不知道.xib
文件是什么,但我知道他们以我不理解的方式搞乱了我的程序。
那么如何创建一个没有任何这些" storyboard"的新Cocoa应用程序。或者"界面构建器"事情呢?什么是最小的,纯编程的程序,它启动一个空窗口?
答案 0 :(得分:4)
要回答的第一个问题是:为什么?即使是基本的MainMenu.xib
也可以为您做很多工作:创建应用程序的菜单栏,并允许您轻松设置应用程序委托以及其他功能。你可以使用那个非常基本的MainMenu.xib
文件,如果你愿意,还可以手动创建其他所有文件(窗口等)。
如果你真的想避免完全使用.xib
文件,你可以这样做,但这样做需要对Cocoa有一些了解。
首先,Cocoa应用程序的main
函数如下所示:
int main(int argc, const char * argv[])
{
return NSApplicationMain(argc, argv);
}
也就是说,它只是调用Cocoa的NSApplicationMain
函数。
根据NSApplication
documentation,NSApplicationMain()
基本上是这样做的:
void NSApplicationMain(int argc, char *argv[]) {
[NSApplication sharedApplication];
[NSBundle loadNibNamed:@"myMain" owner:NSApp];
[NSApp run];
}
现在,如果您根本不使用.xib
个文件,则需要完全避免加载MainMenu.xib
,因此您需要修改默认main()
能做更像这样的事情:
int main(int argc, const char * argv[])
{
[NSApplication sharedApplication];
[NSApp setDelegate:[[YourDelegate alloc] init]];
[NSApp run];
return 0;
}
然后YourDelegate
将负责创建主应用程序菜单,窗口等。
答案 1 :(得分:0)
您拥有的基本应用程序可以作为一个开始。您可以删除Menu.xib并启动该应用程序。在AppDelegate applicationDidFinishLaunching
中,您可以通过编程方式创建NSWindowController和NSMenu。尽管如此,你还是必须手动完成很多东西,这些东西都是用xib或storyboard开箱即用的。