16

我的 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 上没有关于错误消息含义的即时文档。

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

4

5 回答 5

34

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

于 2012-10-25T10:45:05.743 回答
24

Ah, found the issue. For anyone who has this issue, it's because the view hasn't been created in the nib/UIView yet, so no constraints can apply.

I moved the Constraint code from the initWithNib method to viewDidLoad and the error naturally stopped occurring.

于 2012-09-17T02:42:14.517 回答
8

如果您坚持对属性的看法,请确保它们很强大!这可以解释他们为零。

于 2015-01-17T01:22:09.897 回答
0

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

当我使用 iPhone 和 iPad 的不同 NIB 并在使用通用 .m 文件时仅关闭 iPhone NIB 的自动布局时,这发生在我身上。

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

于 2013-08-06T12:11:56.257 回答
0

当我不小心删除了我的一个 UI 元素的“引用插座”时,就会发生这种情况。

于 2021-03-08T09:08:53.430 回答