【问题标题】:Unable to explicitly load view controller from storyboard无法从情节提要显式加载视图控制器
【发布时间】:2025-12-17 05:25:01
【问题描述】:

我正在从故事板显式加载视图控制器并拥有以下代码:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil];
UIViewController *initViewController = [storyboard instantiateViewControllerWithIdentifier:@"InitialScreen"];

但我收到错误“'Storyboard () 不包含标识符为 'InitialScreen' 的视图控制器”

从截图中可以看出,视图控制器确实具有该标识符。我之前成功地使用过这种相同的加载控制器的方式,但不知道为什么这次它不起作用。任何想法可能是什么问题?

【问题讨论】:

    标签: ios storyboard


    【解决方案1】:

    我刚刚发现了问题 - 这是模拟器的问题,我发现我的代码绝对没有问题,并且 100% 确定没问题,当我过去遇到这种情况时,我通常会发现罪魁祸首是 Xcode 本身。因此,即使我已经多次清理和重建,我还是决定尝试重置模拟器中的内容——然后宾果游戏开始工作了。我把它归结为模拟器缓存内容中的一个错误,而不是更新以反映在 IB 中所做的更改。

    【讨论】:

      【解决方案2】:

      您的故事板名称是否与您尝试从中加载视图控制器的故事板文件的名称匹配?通常故事板被命名为MainStoryboard_iPhone

      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:nil];
      

      您还应该检查以确保 Storyboard ID 文本字段中没有尾随空格。除此之外,其他一切看起来都应该对我有用。

      【讨论】:

      • 是的。实际上我刚刚发现了问题 - 这是模拟器的问题,我发现我的代码绝对没有问题,并且 100% 确定没问题,当我过去遇到这种情况时,我通常会找到罪魁祸首是 Xcode 本身。因此,即使我已经多次清理和重建,我还是决定尝试重置模拟器中的内容——然后宾果游戏开始工作了。我把它归结为模拟器缓存内容中的一个错误,并且没有更新以反映在 IB 中所做的更改。
      • 啊,是的,我以前也遇到过这些问题。很高兴你解决了这个问题。编码愉快!
      • @Mungbeans,为了其他有此问题的人的利益,您可以考虑输入您的解决方案作为答案,并接受它。谢谢。