添加第二个故事板会导致“找不到故事板”错误

时间:2014-04-29 14:50:37

标签: ios objective-c xcode storyboard

我开始构建我的应用程序的两个版本,用于3.5英寸屏幕,一个用于4英寸,只有故事板不同。我将3.5故事板带入4英寸项目,并在我的 appDelegate.m 中使用以下代码让程序运行相应的故事板。

UIViewController *vc;
if([[UIDevice currentDevice]userInterfaceIdiom]==UIUserInterfaceIdiomPhone)
{
    if ([[UIScreen mainScreen] bounds].size.height == 568.0f)
    {
        NSLog(@"IPHONE IS WORKING");
        UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"Main.storyboard" bundle:nil];
        vc = [storybord instantiateInitialViewController];
    }
    else
    {
        UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MainFour.storyboard" bundle:nil];
        vc = [storybord instantiateInitialViewController];
    }
}
else
{
    UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"iPad" bundle:nil];
    vc = [storybord instantiateInitialViewController];
}
[_window setRootViewController:vc];
[_window makeKeyAndVisible];

当我使用它时,我收到错误:

  

“无法在捆绑中找到名为'Main.storyboard'的故事板   一个NSBundle“

即使我尝试使用未导入的故事板,如果上面的代码丢失,也会运行该故事板,从而发生错误。所以我假设错误在于故事板的名称。在项目导航器中,故事板名为"Main.storyboard",但调用该名称时找不到它。我究竟做错了什么?感谢。

1 个答案:

答案 0 :(得分:5)

从您指定的名称中删除.storyboard扩展名。

来自reference

storyboardWithName:bundle:
     

为指定的故事板资源文件创建并返回storyboard对象。

+ (UIStoryboard *)storyboardWithName:(NSString *)name
                              bundle:(NSBundle *)storyboardBundleOrNil
     

<强>参数

     

name 故事板资源文件的名称没有文件扩展名。如果此参数为nil,则此方法会引发异常。