如何在没有Storyboard的情况下在Xcode 6中创build一个空应用程序

创build新项目时, Xcode6删除了Empty Application模板。 我们如何在Xcode6创build一个空应用程序(没有Storyboard),就像在早期版本中一样?

XCode6没有选项可以直接创build一个空应用程序,就像在XCode5和更早版本中一样。 但是我们仍然可以通过以下步骤在XCode6创build没有Storyboard应用程序:

  1. 使用XCode6创buildSingle View Application
  2. 删除Main.storyboardLaunchScreen.xib (select它们,右键单击,然后select将其从项目中删除,或者完全删除它们)。
  3. Info.plist文件中删除“主要故事板文件基本名称”和“启动屏幕界面文件基本名称”条目。
  4. 打开AppDelegate.m,并编辑applicationDidFinishLaunchingWithOptions,使其看起来像这样:

     - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.window.rootViewController = [[ViewController alloc] init]; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; } 

    对于Swift 2.x:

     func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.backgroundColor = UIColor.whiteColor() self.window?.makeKeyAndVisible() return true } 

    对于Swift 3:

     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { self.window = UIWindow(frame: UIScreen.main.bounds) self.window?.backgroundColor = UIColor.white self.window?.makeKeyAndVisible() return true } 

一个简单的方法是将XCode 5Empty Application模板复制到XCode的模板目录中。

您可以从这里下载XCode 5Empty Application模板,然后解压缩并复制到/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Templates/Project Templates/iOS/Application目录。

PS这个方法也适用于swift!

编辑
正如@harrisg在下面的评论中所build议的那样,您可以将上述模板放在~/Library/Developer/Xcode/Templates/Project Templates/iOS/Application/文件夹中,以便即使Xcode得到更新也可以使用它。
如果没有这样的目录,那么你可能需要创build这个目录结构: Templates/Project Templates/iOS/Application/ ~/Library/Developer/Xcode/

使用这个简单的方法,我可以在XCode 6创build一个Empty Application 。 (截图如下)

Xcode空应用程序模板 希望这可以帮助!

还有几个步骤需要你做:

  1. 添加前缀文件。 (如果你需要的话)
  2. 要添加一个默认的启动图像,否则在iPhone 5上的应用程序大小将是320×480。

所以这里是一个完整的教程:

  1. 删除Main.storyboard文件
  2. 删除LaunchScreen.xib文件
  3. 删除Info.plist中的“主要故事板文件基本名称”属性
  4. 在Info.plist中删除“启动屏幕界面文件基本名称”属性
  5. 添加“[app name] -Prefix.pch”文件到支持文件的内容:

     #import <Availability.h> #ifndef __IPHONE_3_0 #warning "This project uses features only available in iOS SDK 3.0 and later." #endif #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #endif 
  6. 添加“$ SRCROOT / $ PROJECT_NAME / [pch文件名]”到项目设置 – > Build Settings – > Apple LLVM 6.0 – Language – >“Prefix Header”

  7. 添加“YES”到项目设置 – > Build Settings – > Apple LLVM 6.0 – Language – >“Precompile Prefix Header”
  8. 打开“Image.xcassets”并添加LaunchImage
  9. build立项目,然后会有关于缺less默认启动图像的警告,只要按下警告,并select添加默认,这将添加“默认-568h @ 2x”或 – 如果你想使用“图像.xcassets“,进入项目设置 – >目标 – >常规 – >在”启动图像源“select使用资产目录,它会创build一个新的,你可以select,然后,作为资产目录从现有。
  10. 实现application:didFinishLaunchingWithOptions:方法:

     self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; //Override point for customization after application launch. self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible]; return YES; 

Akhils的回答是完全正确的。 对于我们这些使用Swift的人来说,就是这样的:

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { self.window = UIWindow(frame: UIScreen.mainScreen().bounds) self.window?.backgroundColor = UIColor.whiteColor() self.window?.makeKeyAndVisible() return true } 

还有一个步骤是你需要做的:

1)删除plist文件中的主要故事板文件基本名称

 //AppDelegate.h @property (strong, nonatomic) UIViewController *viewController; @property (strong, nonatomic) UINavigationController *nav; //AppDelegate.m - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {`enter code here` // Override point for customization after application launch. CGRect screenBounds = [[UIScreen mainScreen] bounds]; UIWindow *window = [[UIWindow alloc] initWithFrame:screenBounds]; self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.viewController = [[UIViewController alloc] initWithNibName:@"ViewController" bundle:nil]; self.nav = [[UINavigationController alloc] initWithRootViewController:self.viewController]; [window setRootViewController: self.nav]; [window makeKeyAndVisible]; [self setWindow:window]; return YES; } 

我有在Xcode 6之前的Xcode版本中使用的原始空应用程序模板。我已经在这里上传了它。

您可以下载它并手动将其粘贴到Xcode模板目录中,或使用Xcode, Alcatraz的软件包pipe理器进行安装。 只要searchXcode空应用程序

删除Main.storyboard文件

这可以简单地删除。

更新ProjectName-Info.plist文件

删除Main storyboard base file name密钥。

创build一个nib文件并链接到项目的视图控制器

1.创build一个nib文件(文件 – >新build – >文件 – >查看)

2.更新File's Owner's类到任何项目的视图控制器被调用

3.将File's Owner's view出口链接到nib文件中的view对象

更新应用程序委托

1.导入项目的视图控制器的头文件

2.更新应用程序:didFinishLaunchingWithOptions:方法:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launch. self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; MyViewController *viewController = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:nil]; self.window.rootViewController = viewController; [self.window makeKeyAndVisible]; return YES; } 

我正在使用XCode6 Beta,并且通过将XCode5.xx中的Empty模板添加到XCode6 Beta中来寻找解决此问题的另一个解决scheme。

在应用程序中右键单击XCode5.xx,点击“显示包内容”,并从给定path复制“Empty Application.xctemplate”

目录/开发人员/平台/ iPhoneOS.platform /开发人员/图书馆/ Xcode /模板/项目模板/应用程序

现在退出Window并打开XCode6的给定path

目录/开发人员/平台/ iPhoneOS.platform /开发人员/库/ Xcode /模板/项目模板/ iOS /应用程序/

在Application文件夹中粘贴'Empty Application.xctemplate'。 现在通过退出并创build新项目重新启动XCode6。 你会得到'空申请'选项。

现在当我创build新的Empty项目时,一个.pch文件会自动添加到项目中(我们必须在XCode6中手动添加)

希望它能工作

对于Xcode 8Swift 3 只要删除.storyboard文件,它会自动从.plist删除相应的引用,并在你的AppDelegate.swift添加下面的代码。

  let initialViewController = UIViewController() initialViewController.view.backgroundColor = .white window = UIWindow(frame: UIScreen.main.bounds) window?.rootViewController = initialViewController window?.makeKeyAndVisible() 

您可以编写自己的自定义ViewCountroller,并在AppDelegate.swift使用它作为self.window?.rootViewController ,只需在上面的代码中用您自己的ViewControllerreplaceUIViewController即可。

是的,或者只是使用以前的testing版之一来创build它,并继续在最新版本之后。

您可以为Xcode创build自己的项目模板。 根据您的要求,您可以在此网站上使用模板:

https://github.com/elprup/xcode7-project-template

其他人已经解释了如何摆脱故事板,所以我会跳过这一个。 这是我更喜欢在我的代码中使用较less的可选链接(用Swift 3.1编写):

 func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let window = UIWindow(frame: UIScreen.main.bounds) window.backgroundColor = .white window.rootViewController = MyRootViewController() window.makeKeyAndVisible() self.window = window return true }