2012-09-17 11 views
14

私は自分のLayoutConstraintsが正常に動作していました。制約には最初のレイアウト項目が含まれている必要がありますNSLayoutConstraint

*** 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には、エラーメッセージの意味に関する情報はありません。

誰かがこのエラーが発生したかどうか、それをトラブルシューティングするために何ができるのか不思議です。

答えて

21

ああ、問題が見つかりました。 この問題が発生した人は、nib/UIViewでビューがまだ作成されていないため、制約が適用されないためです。

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

+0

viewDidLoadで制約が作成/追加されても、このクラッシュが発生します。 –

+0

私たちにあなたのコードを教えてください、それは単純なものになるでしょう –

33

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

+0

@smileBot私は強く設定しましたが、私には何も返しません。私はUIViewとloadNibファイルとupdatetheheconstraintsを拡張しているが、そのselfscViewのためにクラッシュしたnilです。 [self addConstraint:[NSLayoutConstraint constraintWithItem:self.subView属性:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:自己属性:NSLayoutAttributeTop乗数:1.0定数:0.0]]; –

0

これあなたには、いくつかの理由で自動レイアウトをオフにした場合にも発生することができますが、あなたはまだ、私は別のNIBのに使用されたときにこれが私に起こった

コードを経由して任意のサブビューに(向きの変更を処理するためなど)の制約を追加していますiPhoneとiPadの場合は、通常の.mファイルを使用しているときにiPhone NIBのみのAutolayoutをオフにします。

解決方法は、デバイスの種類を確認し、必要がない場合はレイアウトの追加をスキップすることです。

+0

@smileBot私は強く設定されていますが、私には何も返されません。私はUIViewとloadNibファイルとupdatetheheconstraintsを拡張しているが、そのselfscViewのためにクラッシュしたnilです。 [self addConstraint:[NSLayoutConstraint constraintWithItem:self.subView属性:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:自己属性:NSLayoutAttributeTop乗数:1.0定数:0.0]]; –

7

あなたがプロパティであなたの意見にぶらぶられている場合は、彼らが強いことを確認してください!これは、それらがゼロであることを説明することができます。

+0

強く私の問題を修正しました。ありがとう! –

+0

ここと同じですが、強くなって問題が解決しました。 – blackmoon

+0

@smileBot私は強く設定されていますが、私には何も返されません。私はUIViewとloadNibファイルとupdatetheheconstraintsを拡張しているが、そのselfscViewのためにクラッシュしたnilです。 [self addConstraint:[NSLayoutConstraint constraintWithItem:self.subView属性:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:自己属性:NSLayoutAttributeTop乗数:1.0定数:0.0]]; –

関連する問題