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

Sev*_*Sev 1 xcode objective-c storyboard ios

我开始构建我的应用程序的两个版本,用于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];
Run Code Online (Sandbox Code Playgroud)

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

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

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

tro*_*foe 5

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

来自参考:

storyboardWithName:bundle:
Run Code Online (Sandbox Code Playgroud)

为指定的Storyboard资源文件创建并返回storyboard对象.

+ (UIStoryboard *)storyboardWithName:(NSString *)name
                              bundle:(NSBundle *)storyboardBundleOrNil
Run Code Online (Sandbox Code Playgroud)

参数

name 没有文件扩展名的storyboard资源文件的名称.如果此参数为,则此方法引发异常nil.