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,这是我第一次有这个错误。

我想通了,问题是故事板没有在设备中更新。

  1. 从模拟器/ iPhone / iPad上卸载应用程序
  2. 产品>清洁
  3. 构build和运行

正如@T0m_Twt在这个问题中的回答所述

在右侧窗格的身份检查器部分,向您的导航控制器提供一个故事板ID。

我为你做了一个截图

在这里输入图像说明

这是另外一个例子:

有两个本地化的故事板。 只有其中一个有你想要的视图控制器。

偶然的情况下,你有iPhone的故事板和iPad的另一个故事板? 如果你这样做,那么iPad可能没有一个具有该标识符的故事板。 另外,当在iPad上运行时,在代码中设置一个断点并validation“故事板”对象是什么。

我在UIStoryboard上使用了一个类别,可以给我每个平台的故事板。

我可以使用[UIStoryboard storyboardHome],这将决定它是否需要iPad或iPhone的具体和返回给我。 我也确保我的故事板遵循正确的命名。 所以我会有Home_iPad和Home_iPhone。

TL; DR – 清除所有内容,并删除旧版本的应用程序,如果有的话。

这可能听起来很疯狂,但是假设如果你改变了软件包名称的目标名称,你可能会在模拟器/设备中安装新版本的应用程序,这可能会导致UIStoryboard实例失败实例化一些视图控制器,这可能最终导致问题中描述的麻烦。 要解决它,你需要删除所有相关的应用程序或只需重置模拟器/设备。