带有程序故事板segue的NSInternalInconsistencyException

Posted

技术标签:

【中文标题】带有程序故事板segue的NSInternalInconsistencyException【英文标题】:NSInternalInconsistencyException with programatic storyboard segue 【发布时间】:2016-07-03 12:06:31 【问题描述】:

如下图所示,当我触发我的故事板时,我看到了以下错误

我正在通过以下方式触发转场:

[self performSegueWithIdentifier:@"dayViewDetailSegue" sender:self];

这是我遇到的错误

'NSInternalInconsistencyException',原因:'无法加载 NIB bundle: 'NSBundle (loaded)' with name 'UIViewController-4FQ-FK-WrG' 和目录'Main.storyboardc''

我尝试过的: 打开故事板作为源代码,在其中我可以找到以下内容

<segue destination="4FQ-FK-WrG" kind="presentation" identifier="dayViewDetailSegue" modalPresentationStyle="fullScreen" modalTransitionStyle="coverVertical" id="L8J-7U-DxM"/>

我已经尝试过 clean 和 build directory clean。

user3182143 对问题的回答 - 但仍有问题

    没有 我没有重命名 Xcode 外部的文件 类对应一个有效的类文件。我也尝试过在情节提要中没有为 VC 声明类文件。 故事板文件基本名称 = Main

    是 Main.storyboard 位于 Copy Bundle Resources 中。我有 还尝试将其删除并重新添加。

    在我的项目中没有以编程方式实例化 ViewController。

    正确链接到适当的目标

    7.我无法更改此值,因为它是灰色的。有什么建议吗?

    不以编程方式添加或更改 VC。这是第一个 我正在做的与故事板相关的程序化事情 项目(触发segue)

    完成。

【问题讨论】:

【参考方案1】:

在你的项目中严格检查以下事项

    您是否在 Xcode 之外重命名了您的 xib 或故事板文件?如果是这样,请检查您引用它的所有地方是否存在不一致之处。还要确保在引用文件的任何地方都尊重大写/小写字母,因为区分大小写。

    转到 Interface Builder,选择您的 View1 ViewController > Utilities Panel > Identity Inspector > 如果您有一个(.h 和 .m 文件),请检查 Custom Class 是否对应于您的 ViewController 类。

    检查您的 Info.plist 文件。如果你使用故事板,你应该有一个类似Main storyboard file base name 而不是Main nib file base name 的条目。如果您使用笔尖,则反之亦然。还要检查文件基本名称是否与实际文件的名称一致。

    检查目标的Build Phases &gt; Copy Bundle Resources 并确保在那里添加了您的xib 或故事板文件。

    如果您以编程方式实例化 View1 ViewController 并使用 xib 文件,请检查 nib 名称是否存在拼写错误(请记住,区分大小写)。 此外,如果您当前将 .xib 文件格式附加到名称,请删除扩展名,因为不应使用它。我的意思是这行代码:UIViewController *controller = [[UIViewController alloc] initWithNibName:@"xibFileName" bundle:nil];

    在文件检查器中检查您的 xib 或情节提要文件的属性,并确保您的文件已链接到 Target Membership 选择面板中的目标。

    在文件检查器中检查 xib 或故事板文件的属性,并尝试将文件 Location 切换为 Relative to projectRelative to group。看看这两种方法是否有所不同。

    如果您以编程方式在 initWithCoder 中添加视图控制器,则应改为在 viewDidLoad 方法中实例化它

    如果上述情况不适用于您的情况,您可以从 Xcode 中删除该文件(选择 Remove References),然后在您的项目中再次导入。

请记住在进行上述更改后始终清理您的项目 (SHIFT+COMMAND+K)。

选择 2

您在 Storyboard 中的班级名称错误。所以请删除并重新添加 Storyboard 中的班级名称。

【讨论】:

伟大的名单。除了第 7 项之外,我都做了所有这些(包括选择 2)——没有任何帮助。该选项显示为灰色,因此我无法更改。如何使此选项可用。 我已经尝试过你在 stroyboard 中所做的事情。它甚至对我来说也很好。 好的...但它不适合我。 :( 把你的项目发给我。 你想要我的截图吗?

以上是关于带有程序故事板segue的NSInternalInconsistencyException的主要内容,如果未能解决你的问题,请参考以下文章

代表为零,使用故事板嵌入segue

使用自定义表格视图单元格中的故事板segue

当按钮逻辑失败时停止故事板中的 segue

故事板中的 Segues 问题

使用 Parse.com 的多个 Segue 故事板和 TableViewCell

mapKit:在用户选择注释标记后执行 segue