16

LayoutConstraintsが正常に機能していましたが、ビューにConstraintsを追加すると、突然これが発生し始めました。

    *** 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

また、エラーメッセージの意味については、インターネットやAppleDocsにすぐに記載されたドキュメントはありません。

誰かがこのエラーに遭遇したかどうか疑問に思っています、そしてそれをトラブルシューティングするために私が何ができるか知っていますか?

4

5 に答える 5

34

このエラー/クラッシュのもう1つの理由は、[NSLayoutContraintconstraintWithItem...]メソッドに渡されるビューがnilである可能性があることです。

于 2012-10-25T10:45:05.743 に答える
24

ああ、問題が見つかりました。この問題を抱えている人にとっては、ビューがまだnib / UIViewで作成されていないため、制約を適用できません。

ConstraintコードをinitWithNibメソッドからviewDidLoadに移動すると、エラーは自然に発生しなくなりました。

于 2012-09-17T02:42:14.517 に答える
8

プロパティを使用してビューを保持している場合は、それらが強力であることを確認してください。これは、それらがゼロであることを説明する可能性があります。

于 2015-01-17T01:22:09.897 に答える
0

これは、何らかの理由で自動レイアウトをオフにした場合にも発生する可能性がありますが、コードを介してサブビューに制約を追加しています(たとえば、方向の変更を処理するため)

これは、iPhoneとiPadで異なるNIBを使用し、共通の.mファイルを使用しているときにiPhoneNIBのみの自動レイアウトをオフにしたときに発生しました。

解決策は、デバイスタイプを確認し、不要なレイアウトの追加をスキップすることです。

于 2013-08-06T12:11:56.257 に答える
0

これは、UI要素の1つの「参照アウトレット」を誤って削除したときに発生しました。

于 2021-03-08T09:08:53.430 に答える