2013-10-24 7 views
1

Я использую раскадровку среди xib.Невозможно одновременно удовлетворить ограничения - при добавлении subview

У меня есть UIViewController, загруженный из раскадровки, и UIView загружен из xib. Я пытаюсь добавить XIB как подвид раскадровки UIViewController и установить его дно constratint так:

TransactionsPickerViewController *_picker = [[TransactionsPickerViewController alloc] initWithNibName:nil bundle:nil]; 
[self.view addSubview:picker.view]; 

NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:picker.view 
                  attribute:NSLayoutAttributeBottom 
                  relatedBy:NSLayoutRelationEqual 
                  toItem:self.view 
                  attribute:NSLayoutAttributeBottom 
                  multiplier:1.0f constant:0.0f]; 
[self.view addConstraint:constraint]; 

Он вызывает это отладка консоли:

Unable to simultaneously satisfy constraints. 
    Probably at least one of the constraints in the following list is one you don't want... 

UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x1090509e0 UIView:0x109440be0.bottom == UIView:0x109619ba0.bottom>", 
    "<NSAutoresizingMaskLayoutConstraint:0x109052400 h=-&- v=-&- UIView:0x109440be0.midY == UIView:0x109619ba0.midY - 140>", 
    "<NSAutoresizingMaskLayoutConstraint:0x109052470 h=-&- v=-&- UIView:0x109440be0.height == UIView:0x109619ba0.height - 280>" 
) 

Где эти автоматическое изменение свойств откуда и могу ли я избавиться от них, чтобы заставить его работать? В сущности, я хочу, чтобы мой заголовок смотрел на родительский снизу после добавления.

Я попытался отключить автозапуск в файле xib, но ничего не изменил.

ответ

3

Возможно, ваша ошибка вызвана не установкой picker.view. translatesAutoresizingMaskIntoConstraints = NO; перед добавлением ее в качестве подзаголовка.

Однако, на мой взгляд, вы должны добавить TransactionsPickerViewController в качестве контроллера детского представления, а не просто использовать его представление. Смотрите разделы: Implementing a Custom Container View Controller и Implementing a Container View Controller.

+0

это похоже на работу, однако седений autoresizemask к NO, вызывающих интерактивными компонентов на взгляд ребенка не реагировать на взаимодействия, так как они лежали где-то еще –

+0

@Xylian: Как я уже говорил в моем ответе, вы не должны добавить вид из другой контроллер напрямую. Вместо этого используйте сдерживание контроллера вида. –

+0

Сделал это, отлично работал, спасибо :) –

Смежные вопросы