如何在没有Storyboard的情况下在Xcode 6中创build一个空应用程序
创build新项目时, Xcode6
删除了Empty Application
模板。 我们如何在Xcode6
创build一个空应用程序(没有Storyboard),就像在早期版本中一样?
XCode6
没有选项可以直接创build一个空应用程序,就像在XCode5
和更早版本中一样。 但是我们仍然可以通过以下步骤在XCode6
创build没有Storyboard
应用程序:
- 使用
XCode6
创buildSingle View Application
- 删除
Main.storyboard
和LaunchScreen.xib
(select它们,右键单击,然后select将其从项目中删除,或者完全删除它们)。 - 在
Info.plist
文件中删除“主要故事板文件基本名称”和“启动屏幕界面文件基本名称”条目。 -
打开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 5
的Empty Application
模板复制到XCode
的模板目录中。
您可以从这里下载XCode 5
的Empty 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
。 (截图如下)
希望这可以帮助!
还有几个步骤需要你做:
- 添加前缀文件。 (如果你需要的话)
- 要添加一个默认的启动图像,否则在iPhone 5上的应用程序大小将是320×480。
所以这里是一个完整的教程:
- 删除Main.storyboard文件
- 删除LaunchScreen.xib文件
- 删除Info.plist中的“主要故事板文件基本名称”属性
- 在Info.plist中删除“启动屏幕界面文件基本名称”属性
-
添加“[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
-
添加“$ SRCROOT / $ PROJECT_NAME / [pch文件名]”到项目设置 – > Build Settings – > Apple LLVM 6.0 – Language – >“Prefix Header”
- 添加“YES”到项目设置 – > Build Settings – > Apple LLVM 6.0 – Language – >“Precompile Prefix Header”
- 打开“Image.xcassets”并添加LaunchImage
- build立项目,然后会有关于缺less默认启动图像的警告,只要按下警告,并select添加默认,这将添加“默认-568h @ 2x”或 – 如果你想使用“图像.xcassets“,进入项目设置 – >目标 – >常规 – >在”启动图像源“select使用资产目录,它会创build一个新的,你可以select,然后,作为资产目录从现有。
-
实现
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 8
和Swift 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自己的项目模板。 根据您的要求,您可以在此网站上使用模板:
其他人已经解释了如何摆脱故事板,所以我会跳过这一个。 这是我更喜欢在我的代码中使用较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 }