我开始构建我的应用程序的两个版本,用于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"
,但调用该名称时找不到它。我究竟做错了什么?感谢。
答案 0 :(得分:5)
从您指定的名称中删除.storyboard
扩展名。
来自reference:
storyboardWithName:bundle:
为指定的故事板资源文件创建并返回storyboard对象。
+ (UIStoryboard *)storyboardWithName:(NSString *)name bundle:(NSBundle *)storyboardBundleOrNil
<强>参数强>
name 故事板资源文件的名称没有文件扩展名。如果此参数为
nil
,则此方法会引发异常。