如何在XCode中创建没有故事板或界面构建器的Cocoa应用程序?

时间:2016-01-07 20:07:46

标签: xcode cocoa

我只是希望能够以编程方式创建我的程序。所以我转到File > New > Project并选择Cocoa Application,并确保"使用故事板"没有在向导的下一步检查。它给我的项目中有一个MainMenu.xib文件。我不知道.xib文件是什么,但我知道他们以我不理解的方式搞乱了我的程序。

那么如何创建一个没有任何这些" storyboard"的新Cocoa应用程序。或者"界面构建器"事情呢?什么是最小的,纯编程的程序,它启动一个空窗口?

2 个答案:

答案 0 :(得分:4)

要回答的第一个问题是:为什么?即使是基本的MainMenu.xib也可以为您做很多工作:创建应用程序的菜单栏,并允许您轻松设置应用程序委托以及其他功能。你可以使用那个非常基本的MainMenu.xib文件,如果你愿意,还可以手动创建其他所有文件(窗口等)。

如果你真的想避免完全使用.xib文件,你可以这样做,但这样做需要对Cocoa有一些了解。

首先,Cocoa应用程序的main函数如下所示:

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

也就是说,它只是调用Cocoa的NSApplicationMain函数。

根据NSApplication documentationNSApplicationMain()基本上是这样做的:

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开箱即用的。