STORYBOARD EXCEPTION - Storyboard不包含带标识符的视图控制器

时间:2014-08-21 19:49:08

标签: ios xcode 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;
}

在我的故事板中,我已经为导航控制器设置了故事板ID。

>##Custom Class 
>Class: UINavigationController
>##Identity
>Storyboard ID: FilesNavigation

我将此代码用于其他模块的开关/外壳块上的另一个案例,它也适用于iPad,这是我第一次出现此错误。

5 个答案:

答案 0 :(得分:54)

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

  1. 从模拟器/ iPhone / iPad卸载应用程序
  2. 产品&gt;清洁
  3. 构建&amp;运行
  4. 如@ T0m_Twt在此question

    中的答案所述

答案 1 :(得分:11)

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

我为你拍了截图

enter image description here

答案 2 :(得分:9)

这是另一个案例:

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

答案 3 :(得分:1)

偶然的机会,你有iPhone的故事板和iPad的另一个故事板吗?如果你这样做,那么iPad可能没有带有该标识符的故事板。此外,在iPad上运行时,请在代码中设置断点并验证“故事板”对象的内容。

我在UIStoryboard上使用了一个类别,它将为每个平台提供故事板。

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

答案 4 :(得分:0)

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

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