2015-09-27 3 views
0

Мое приложение разбивается при переходе на UIViews, и я не могу найти причину. Я получаю эту ошибку в журналах консоли Xcode:Невозможно отладить ограничения компоновки

2015-09-23 10: 03: 43,420 Мой App [1510: 528283] Иерархия зрения не готова к ограничению: При добавлении к мнению, элементы ограничения должны быть потомками этого представления (или самого представления). Это приведет к сбою, если ограничение должно быть разрешено до того, как будет собрана иерархия представления. Перерыв - [UIView (UIConstraintBasedLayout) _viewHierarchyUnpreparedForConstraint:] для отладки.

2015-09-23 10: 03: 43,421 My App [1510: 528283] *** отказ Assertion в - [UIView _layoutEngine_didAddLayoutConstraint: roundingAdjustment: mutuallyExclusiveConstraints:], /BuildRoot/Library/Caches/com.apple.xbs /Sources/UIKit/UIKit-3505.16/NSLayoutConstraint_UIKitAdditions.m:590

Я не знаю, как отладить это, я не понимаю, что Break on -[UIView(UIConstraintBasedLayout) _viewHierarchyUnpreparedForConstraint:] to debug.. Я не нашел, как это сделать в документации и в любом примере, может кто-нибудь сказать мне, как я мог это сделать?

+0

нужен код, используемый для добавления ограничений – dopcn

ответ

0

При добавлении ограничения между представлениями оба представления должны быть в одной иерархии.

Это означает, что оба вида должны совместно использовать общий вид.

Проверьте свой код ограничения, чтобы убедиться, что это так.

+0

Спасибо. Как я могу найти и дебютировать что-то вроде: 'Иерархия представлений не подготовлена ​​к ограничению: '? – AppsDev

+0

Добавили ли вы точку останова? – Abizern

+0

Да, но иногда я получаю эту ошибку, а иногда нет, я не могу найти, какое ограничение вызывает крушение с «нормальной» точкой останова ... – AppsDev

2

Это происходит, например, когда вы добавили ограничения в представление, и само представление еще не добавлено в другое представление. Не имеет смысла

override func viewDidLoad() { 
    super.viewDidLoad 

    let newView = setupCandyView() 
    view.addSubview(newView) 
} 


func setupCandyView() -> UIView { 
    let container = UIView() 

    let button = UIButton() 
    container.addSubview(button) 

    // you are adding constarints here 
    // but container isn't added to the view yet 

    addConstraint(NSLayoutConstraint(item: button, 
    attribute: .CenterY, 
    relatedBy: .Equal, 
    toItem: container, 
    attribute: .CenterY, 
    multiplier: 1.0, 
    constant: 0)) 

    return container 
} 

Просто добавьте символическую точку останова, чтобы поймать, где находится ошибка.

Symbolic Breakpoint Example

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