我正在使用XCode6测试版并试用Swift。当我在视图控制器中放置一些自动布局约束时,应用程序崩溃并出现以下错误:
Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named IBNSLayoutConstraint'
答案 0 :(得分:197)
您收到此错误是因为您已为在运行时删除的IBOutlet设置了约束。在Interface Builder中将约束设置为占位符时会发生这种情况。由于约束被删除,当它取消归档时,它会抛出一个错误,说它不能这样做。
有两种方法可以解决这个问题。
placeholder="YES"
。
这应该是这样的:
假设您确实希望约束为占位符,那么您需要删除任何引用插座。为此,请选择您希望成为占位符的约束。然后打开连接检查器(最右边的按钮,如下所示:( - >)),然后删除该约束上可能存在的任何引用插座。
答案 1 :(得分:6)
我刚才遇到了同样的问题,以下内容对我有用。
我将我的应用程序的工作版本发布到App Store,几天后再次回来处理它在UITabBarController中的一个我的选项卡上它因错误而崩溃:
Terminating app due to uncaught exception 'NSInvalidUnarchiveOperationException', reason: 'Could not instantiate class named IBNSLayoutConstraint'
我没有任何我知道的占位符布局约束或约束不应该定义的出口。
我的解决方案是简单地关闭大小类并保留iPhone的大小类数据(App仅适用于iPhone)。这肯定删除了我在尺寸类中错过的任何东西。我想要大小课程,所以我重新打开它们,应用程序再次工作。
答案 2 :(得分:4)
答案 3 :(得分:1)
使用大小类时存在一些问题。我从故事板属性中禁用了该选项,并仅使用自动布局。这不是一个大问题,因为该应用只是iPhone。
答案 4 :(得分:1)
最终发生的事情是我在Interface Builder中剪切了一个子视图,将其复制到另一个xib中。这使子视图保留在原始xib界面构建器中,并且显示为灰色。从其原始位置删除子视图(通过选择和删除)。我能够摆脱错误。
答案 5 :(得分:0)
当您选择不使用名为“使用自动布局”的检查器中的“显示文件检查器”下的约束的xib文件时,检查器窗口中有一个选项。
答案 6 :(得分:0)
我对滚动视图进行了更改,以便使用我在Stackoverflow中找到的解决方案让嵌入其中的选择器控件正常工作。 我的新故事板只是将这些属性添加到滚动视图中,这对我来说似乎很好。
delaysContentTouches="NO" canCancelContentTouches="NO"
但另外,我在另一个场景的故事板中看到了以下新片段:
<variation key="default">
<mask key="subviews">
<exclude reference="86H-aM-wei"/>
</mask>
</variation>
我不知道它来自哪里。起初我忽略了它,因为一切似乎都在我的开发机器上找到了。但是当构建版本作为Release构建并经过测试时,我遇到了崩溃。删除那个虚假(?)碎片修复了崩溃并且似乎没有影响其他任何东西。
答案 7 :(得分:0)
当我在自定义UICollectionViewCell中有一个按钮时,我遇到了这个问题,并且在该类上有一些作为IBOutlets的约束。我将按钮从单元格移动到父视图控制器,并且仍然在单元格中引用了IBOutlets,但实际上并没有在单元格中存在,因此将所有内容都搞砸了。只需要删除那些IBOutlets,一切都运行良好!