在Xcode中使用多个Storyboard

我创建了5个额外的故事板,我删除了主要的故事板。 这是因为我想为iPhone和iPad配备5个独立的故事板,以匹配5种不同的屏幕尺寸。 到目前为止,我有一个用于iPhone 3.5英寸,一个用于iPhone 4英寸,一个用于iPhone 4.7英寸,一个用于iPhone 5.5英寸,一个用于iPad。 我已经将代码放在下面以将其全部链接起来并使其工作。 但是,当您尝试构建项目时,它不起作用。 没有错误但是我想进入iPhone 3.5英寸故事板并且我添加了一个UIViewController和一个Button或标签,然后当你构建项目时它会进入你的启动屏幕,然后它就不会从那里做任何事情。 我把起始箭头放在UIViewController上,但是我无法从启动屏幕上得到任何东西。 我在所有的故事板和他们的模拟器上试过这个。 我想知道我是否在代码中遗漏了一些东西,但我不确定。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIStoryboard *storyboard = nil; if ([[UIDevice currentDevice] userInterfaceIdiom] ==UIUserInterfaceIdiomPad) { storyboard = [UIStoryboard storyboardWithName:@"Storyboard_iPad" bundle:nil];//iPad } else { CGSize screenSize = [[UIScreen mainScreen] bounds].size; if (screenSize.height == 480){ storyboard = [UIStoryboard storyboardWithName:@"Storyboard_iPhone4S" bundle:nil];//iPhone 3.5inch } else if (screenSize.height == 568){ storyboard = [UIStoryboard storyboardWithName:@"Storyboard_iPhone5/5C/5S" bundle:nil];//iPhone 4inch } else { if (screenSize.height == 667){ storyboard = [UIStoryboard storyboardWithName:@"Storyboard_iPhone6" bundle:nil];//iPhone 4.7inch } else if (screenSize.height == 736){ storyboard = [UIStoryboard storyboardWithName:@"Storyboard_iPhone6Plus" bundle:nil];//iPhone 5.5inch } else //default storyboard storyboard = [UIStoryboard storyboardWithName:@"Main.Storyboard" bundle:nil]; } } self.window.rootViewController = [storyboard instantiateInitialViewController]; [self.window makeKeyAndVisible]; return YES; } 

在项目中找到info.plist文件,并删除名为“主要故事板文件基本名称”的行。 在此处输入图像描述

此外,您忘了创建窗口( rdelmar的信用)。

 self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds]; 

我强烈建议您查看自动布局和大小类 。 使用这两个,您可以在一个故事板中支持所有屏幕尺寸。 从一开始就有点困难,但从长远来看它肯定是值得的。

有一个关于这个的video来自最近的WWDC,名为使用UIKit构建自适应应用程序 。