0

私のコードとアプリの画像を以下に示します。基本的に、このView Controllerのメソッドに制約を追加してviewDidLoad、2つのラベルが同じx位置から始まるように位置合わせします。何らかの理由で、私はこの警告を受け取ります:

タイプ「NSLayoutRelation」(別名「列挙型NSLayoutRelation」)のパラメーターに「UIView*」を送信する整数変換への互換性のないポインター。

また、アプリを実行すると、次のエラーが発生します。

*キャッチされなかった例外'NSInvalidArgumentException'が原因でアプリを終了しています、理由:'* + [NSLayoutConstraintConstraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:]:不明なレイアウト属性'

ここに画像の説明を入力してください

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self.carMakeLabel attribute:NSLayoutRelationEqual relatedBy:self.view toItem:self.carModelLabel attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0];

[self.view addConstraint:constraint];
4

2 に答える 2

3

試す:

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:self.carMakeLabel attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.carModelLabel attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0];

[self.view addConstraint:constraint];

self.carModelLabelとself.carMakeLabelの両方がself.viewのビュー階層にあることを確認してください。

于 2012-12-12T03:03:53.787 に答える
-1

メソッドのシグネチャは

+(id)constraintWithItem:(id)view1 attribute:(NSLayoutAttribute)attr1 relatedBy:(NSLayoutRelation)relation toItem:(id)view2 attribute:(NSLayoutAttribute)attr2 multiplier:(CGFloat)multiplier constant:(CGFloat)c;

そしてあなたが使った

    constraintWithItem:self.carMakeLabel attribute:NSLayoutRelationEqual relatedBy:self.view toItem:self.carModelLabel attribute:NSLayoutAttributeLeading multiplier:1.0 constant:0];

属性に送信されるデータ型は関係型です:NSLayoutRelationEqual

最初の属性と relatedBy 引数が入れ替わっていると思います。

あなたはそれを修正する必要があるかもしれません

于 2012-12-12T02:56:47.787 に答える