约束必须包含第一个布局项NSLayoutConstraint

时间:2012-09-17 02:39:26

标签: ios autolayout nslayoutconstraint

我的LayoutConstraints工作正常,然后突然间我在为视图添加约束时开始得到这个。

    *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** +[NSLayoutConstraint constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]: Constraint must contain a first layout item'
*** First throw call stack:
(0x7cd012 0x2017e7e 0x7ccdeb 0xde6bf1 0x9c487 0x994a3 0x414fb 0x20224 0x5c6c0 0xc30e83 0x78c376 0x78be06 0x773a82 0x772f44 0x772e1b 0x28eb7e3 0x28eb668 0x149465c 0x2cfd 0x2c25)
libc++abi.dylib: terminate called throwing an exception

在互联网或Apple Docs上没有关于错误信息含义的直接文档。

只是想知道是否有人遇到过这个错误,并知道我可以做些什么来解决它?

5 个答案:

答案 0 :(得分:33)

此错误/崩溃的另一个原因可能是,传递给[NSLayoutContraint constraintWithItem ...]方法的视图为零。

答案 1 :(得分:23)

啊,发现了这个问题。 对于遇到此问题的任何人来说,这是因为尚未在nib / UIView中创建视图,因此不能应用任何约束。

我将Constraint代码从initWithNib方法移到了viewDidLoad,错误自然停止了。

答案 2 :(得分:7)

如果你坚持你的观点与属性确保他们是强大的!这可能是因为它们是零。

答案 3 :(得分:0)

如果您出于某种原因关闭Autolayout,也会发生这种情况,但您仍然会通过代码向任何子视图添加约束(例如,处理方向更改)

当我使用不同的NIB用于iPhone和iPad时,这种情况发生在我身上,并且在使用常见的.m文件时仅关闭了iPhone NIB的Autolayout。

解决方案是检查设备类型并跳过不需要的布局添加。

答案 4 :(得分:0)

这是因为我不小心删除了我的一个 UI 元素的“引用出口”。