无法从情节提要显式加载视图控制器

Posted

技术标签:

【中文标题】无法从情节提要显式加载视图控制器【英文标题】:Unable to explicitly load view controller from storyboard 【发布时间】:2013-04-01 23:33:33 【问题描述】:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

【讨论】:

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

以上是关于无法从情节提要显式加载视图控制器的主要内容,如果未能解决你的问题,请参考以下文章

推送视图控制器后从情节提要加载视图

在 XCTest 测试中从情节提要加载的视图控制器中清空 UIView 快照(间歇性)

Xcode 11:无法从带有标识符的情节提要中实例化视图控制器

如何从情节提要以编程方式加载 UIViewController?

从情节提要设置约束后如何立即修改约束?

从情节提要重新加载视图时,以编程方式添加的 iOS 子视图会丢失