【问题标题】:Using multiple Storyboards in Xcode在 Xcode 中使用多个 Storyboard
【发布时间】:2014-11-23 06:38:57
【问题描述】:

我创建了 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;
}

【问题讨论】:

    标签: ios objective-c xcode


    【解决方案1】:

    在您的项目中找到您的 info.plist 文件并删除名为“主故事板文件基本名称”的行。

    另外,您忘记创建窗口(感谢 rdelmar)。

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

    我强烈建议您查看Auto LayoutSize Classes。使用这两个,您可以在一个 Storyboard 中支持所有屏幕尺寸。一开始有点难,但从长远来看肯定是值得的。

    最近的 WWDC 中有一个关于此的视频,名为 Building Adaptive Apps with UIKit

    【讨论】:

    • 谢谢。但现在它只是进入黑屏而不是我的 UIViewController 有一个标签说你好。其他尺寸也会发生同样的情况。
    • 您也可以通过单击项目并转到“常规”窗格来执行此操作。在那里,只需删除主界面字段中显示“Main”的位置。
    • @BenjaminMcIntyre,您还需要创建窗口。 self.window 在您的代码中将为零。
    • @rdelmar,你如何创建一个窗口?抱歉,我对此很陌生。
    • @BenjaminMcIntyre, self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];您还需要在最后返回 YES 之前使其可见,[self.window makeKeyAndVisible];
    猜你喜欢
    • 1970-01-01
    • 2012-03-17
    • 2012-11-21
    • 1970-01-01
    • 2012-11-07
    • 2014-08-04
    • 2021-10-13
    • 1970-01-01
    • 2012-03-20
    相关资源
    最近更新 更多