我刚刚安装了带有 OS X Mavericks 的 Xcode 5.0.2。在 Xcode 4.5 上运行最初为 iOS 5.1 构建的项目时,出现“NSInternalInconsistencyException”错误,如下所示:
*** Assertion failure in -[UIStoryboardEmbedSegue perform],
/SourceCache/UIKit_Sim/UIKit-2903.23/UIStoryboardEmbedSegue.m:19
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException',
reason: 'There are unexpected subviews in the container view.
Perhaps the embed segue has already fired once or
a subview was added programmatically?'
我所做的是解决显示的与已弃用 API 相关的任何警告,但我仍然面临这个问题。
我的问题是:
- 我如何确定是哪个 Storyboard场景导致了这个问题?
- 另外,有什么推荐的方法可以解决这个问题吗?
注意:我注意到我在 xCode 5 中使用 iOS 7 作为基础 SDK,而在 xCode 4.5 上它曾经是 iOS 6,但两者的部署目标都设置为 6.0。将 Xcode 5 中的部署目标更改为其他 SDK 版本并未解决该问题。
注意 2:我注意到在适用于 iOS 6 的 iPhone 模拟器上的 Xcode 4.5 上运行并且 Base SDK 设置为 iOS 6.0 时不会发生此问题。
Storyboard截图 Table View Controller 有一个容器 View ,带有一个到 View Controller 的“embed segue”。
最佳答案
我想通了。
我的 UI 是怎样的
我正在为 iPhone 和 iPad 创建一个通用应用程序,并为这些设备中的每一个提供 Storyboard。 我有一个连接到导航 Controller 的选项卡栏 Controller ,然后连接到一个 UITableViewController,它在静态单元格中显示一个表(为了让最上面的行显示标题)。在这个 UITableViewController 中,我有一个容器 View (使用自定义类 MyApp_UITableViewCell 设置),它显示许多动态行。
原因
问题是由于容器 View 被设置为具有自定义类:MyApp_BIUiTableViewCell。通过在 Storyboard 中删除对该自定义类的引用,问题得到解决
我是如何解决的
将基础 SDK 和部署目标更改为 iOS 7。
在每个设备的 Storyboard中:我删除了每个容器 View (设置为 MyApp_UITableViewCell)的身份检查器中的引用自定义单元格
我的推荐
对于类似的问题,我能说的是检查自定义类集并尝试(一个接一个地)删除它们。另外,尝试注释掉每个 viewDidload 和 viewDidappear 内容,看看问题是在哪里引起的。
关于ios - Xcode 5 与 iOS 7 : 'Story Board: There are unexpected subviews in the container view.' 中的 NSInternalInconsistencyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20030356/