在Xcode中使用多个Storyboard

时间:2014-11-23 06:38:58

标签: ios objective-c xcode

我创建了5个额外的故事板,我删除了主故事板。这是因为我想为iPhone和iPad提供5个独立的故事板,以匹配5种不同的屏幕尺寸。到目前为止,我有一个用于iPhone 3.5英寸,一个用于iPhone 4英寸,一个用于iPhone 4.7英寸,一个用于iPhone 5.5英寸,一个用于iPad。我已经把代码放在下面,将它全部链接起来并使其工作。但是,当您尝试构建项目时,它不起作用。没有错误,但让我说我进入iPhone 3.5英寸故事板,我添加了一个UIViewController和一个按钮或标签,然后当你构建项目时,它进入你的启动屏幕,然后它没有做任何事情。我把起始箭头放在了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;
}

1 个答案:

答案 0 :(得分:3)

在项目中找到您的info.plist文件,并删除名为"主故事板文件基本名称"的行。 enter image description here

此外,您忘记创建窗口(信用到rdelmar)。

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

我强烈建议您调查Auto LayoutSize Classes。使用这两个,您可以在一个故事板中支持所有屏幕尺寸。从一开始就很难搞定,但从长远来看它绝对值得。

最近的WWDC上有一段名为Building Adaptive Apps with UIKit的视频。