STORYBOARD EXCEPTION – Storyboard不包含带标识符的视图控制器
我目前正在为iPhone和iPad开发iOS应用程序。 我试图显示一个NavigationController来制作一个显示文件的模块。 在iPhone中,它工作得很好,但我无法在iPad上运行。
我收到以下错误:
'Storyboard (<UIStoryboard: 0x919b200>) doesn't contain a view controller with identifier 'FilesNavigation''
这是代码:
case 10: // Files { UINavigationController *navigationController = [storyboard instantiateViewControllerWithIdentifier:@"FilesNavigation"]; FilesViewController *filesViewController = [storyboard instantiateViewControllerWithIdentifier:@"Files"]; [navigationController pushViewController:filesViewController animated:YES]; self.slidingViewController.topViewController = navigationController; break; }
在我的故事板中,我已经为导航控制器设置了Storyboard ID。
>##Custom Class >Class: UINavigationController >##Identity >Storyboard ID: FilesNavigation
我使用这个代码在其他模块的开关/大小写块的另一个案例,它也适用于iPad,这是我第一次有这个错误。
我想通了,问题是故事板没有在设备中更新。
- 从模拟器/ iPhone / iPad上卸载应用程序
- 产品>清洁
- 构build和运行
正如@T0m_Twt在这个问题中的回答所述
在右侧窗格的身份检查器部分,向您的导航控制器提供一个故事板ID。
我为你做了一个截图
这是另外一个例子:
有两个本地化的故事板。 只有其中一个有你想要的视图控制器。
偶然的情况下,你有iPhone的故事板和iPad的另一个故事板? 如果你这样做,那么iPad可能没有一个具有该标识符的故事板。 另外,当在iPad上运行时,在代码中设置一个断点并validation“故事板”对象是什么。
我在UIStoryboard上使用了一个类别,可以给我每个平台的故事板。
我可以使用[UIStoryboard storyboardHome],这将决定它是否需要iPad或iPhone的具体和返回给我。 我也确保我的故事板遵循正确的命名。 所以我会有Home_iPad和Home_iPhone。
TL; DR – 清除所有内容,并删除旧版本的应用程序,如果有的话。
这可能听起来很疯狂,但是假设如果你改变了软件包名称的目标名称,你可能会在模拟器/设备中安装新版本的应用程序,这可能会导致UIStoryboard
实例失败实例化一些视图控制器,这可能最终导致问题中描述的麻烦。 要解决它,你需要删除所有相关的应用程序或只需重置模拟器/设备。