Как добавить это ограничение в Xcode? Кажется, мой аргумент relatedBy: неверен

Мой код ниже, а также изображение моего приложения. По сути, я хочу добавить ограничение в метод viewDidLoad для этого контроллера представления, чтобы выровнять две метки, чтобы они начинались с одной и той же позиции x. Однако по какой-то причине я получаю это предупреждение:

Несовместимый указатель на целочисленное преобразование, отправляющий 'UIView *' в параметр типа 'NSLayoutRelation' (также известный как 'enum NSLayoutRelation');

И когда я запускаю приложение, я получаю следующую ошибку:

* Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "* +[NSLayoutConstraint limitedWithItem: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];

person Doug Smith    schedule 12.12.2012    source источник


Ответы (2)


Пытаться:

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.

person yuf    schedule 12.12.2012

Сигнатура метода

+(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 переключаются.

Возможно, вам придется исправить это

person Srikanth    schedule 12.12.2012