2017-02-16 14 views
0

Я продолжаю получать целую кучу предупреждений о ограничениях, но они, похоже, происходят только при переходе контроллера вида через контроллер панели вкладок.Предупреждения ограничения только при переходе просмотров через TabBarController

поэтому, когда я использую этот код, я не получаю ошибки:

let tbc = self.storyboard!.instantiateViewController(withIdentifier: "myViewController") as! myViewController 
self.present(tbc, animated: false, completion: nil) 

но когда я переход с этим кодом, много ошибок:

let tbc = self.storyboard!.instantiateViewController(withIdentifier: "MyTabController") as! UITabBarController 
tbc.selectedIndex = 1 
tbc.modalTransitionStyle = .coverVertical 
self.present(tbc, animated: true, completion: nil) 

Это всего лишь простой ошибки напечатано на консоль:

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. 
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful. 
2017-02-16 19:09:28.038332 ParseStarterProject-Swift[42916:640604] [LayoutConstraints] Unable to simultaneously satisfy constraints. 
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
     (1) look at each constraint and try to figure out which you don't expect; 
     (2) find the code that added the unwanted constraint or constraints and fix it. 
    (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSAutoresizingMaskLayoutConstraint:0x60800029e500 h=--& v=--& UIView:0x7fb66b551680.width == 142.8 (active)>", 
    "<NSAutoresizingMaskLayoutConstraint:0x60800029e4b0 h=--& v=--& UIView:0x7fb66b551680.height == 140 (active)>", 
    "<NSLayoutConstraint:0x60800029be90 UIImageView:0x7fb66b551820.width == UIImageView:0x7fb66b551820.height (active)>", 
    "<NSLayoutConstraint:0x60800029ba80 V:[UIImageView:0x7fb66b551820]-(50)-| (active, names: '|':UIView:0x7fb66b551680)>", 
    "<NSLayoutConstraint:0x60800029c0c0 V:|-(0)-[UIImageView:0x7fb66b551820] (active, names: '|':UIView:0x7fb66b551680)>", 
    "<NSLayoutConstraint:0x60800029c110 H:[UIImageView:0x7fb66b551820]-(15)-| (active, names: '|':UIView:0x7fb66b551680)>", 
    "<NSLayoutConstraint:0x60800029c160 H:|-(15)-[UIImageView:0x7fb66b551820] (active, names: '|':UIView:0x7fb66b551680)>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x60800029be90 UIImageView:0x7fb66b551820.width == UIImageView:0x7fb66b551820.height (active)> 

Таким образом, единственное ограничение, с которым я могу думать, что это может быть связано, показано на изображении бело ш:

enter image description here

Я попытался символическая точка останова

UIViewAlertForUnsatisfiableConstraints 

с действием

expr -l objc++ -O -- [[UIWindow keyWindow] _autolayoutTrace] 

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

•UIWindow:0x7fb66b405490 
| UITransitionView:0x7fb66b516fa0 
| | UILayoutContainerView:0x7fb66b514e80 
| | | UINavigationTransitionView:0x7fb66b613980 
| | | | UIViewControllerWrapperView:0x7fb66b40e580 
| | UITransitionView:0x7fb66b449f90 
| UITransitionView:0x7fb66b45bd90 
| | UILayoutContainerView:0x7fb66d831410 
| | | UITransitionView:0x7fb66b605eb0 
| | | | UIViewControllerWrapperView:0x7fb66b5567a0 
| | | | | •UIView:0x7fb66b4300c0 
| | | | | | *UICollectionView:0x7fb66b970400 
| | | | | | | •ParseStarterProject_Swift.PackCollectionViewCell:0x7fb66d836fb0 
| | | | | | | | +UIView:0x7fb66d8371d0 
| | | | | | | | | *PFImageView:0x7fb66d837370 
| | | | | | | | | *UILabel:0x7fb66d837560'This is a series of breat...' 
| | | | | | | •ParseStarterProject_Swift.PackCollectionViewCell:0x7fb66b4651f0 
| | | | | | | | +UIView:0x7fb66b465020 
| | | | | | | | | *PFImageView:0x7fb66b465410 
| | | | | | | | | *UILabel:0x7fb66b465600'Ever had trouble falling ...' 
| | | | | | | •ParseStarterProject_Swift.PackCollectionViewCell:0x7fb66b560e60 
| | | | | | | | +UIView:0x7fb66b561080 
| | | | | | | | | *PFImageView:0x7fb66b561220 
| | | | | | | | | *UILabel:0x7fb66b561410'This is a week long intro...' 
| | | | | | | UIImageView:0x7fb66b4305c0 
| | | | | | *_UILayoutGuide:0x7fb66b430260 
| | | | | | *_UILayoutGuide:0x7fb66b430410 
| | | UITabBar:0x7fb66b54c280 
| | | | _UIBarBackground:0x7fb66d830680 
| | | | | UIImageView:0x7fb66d830b20 
| | | | | UIVisualEffectView:0x7fb66d830d00 
| | | | | | _UIVisualEffectBackdropView:0x7fb66d8310a0 
| | | | | | _UIVisualEffectFilterView:0x7fb66b40ddd0 
| | | | | | _UIVisualEffectFilterView:0x7fb66b556940 
| | | | UITabBarButton:0x7fb66d82f890 
| | | | | UITabBarSwappableImageView:0x7fb66b43c280 
| | | | | UITabBarButtonLabel:0x7fb66d82fb30'Menu' 
| | | | UITabBarButton:0x7fb66b63e100 
| | | | | UITabBarButtonLabel:0x7fb66b63e3a0 
| | | | UITabBarButton:0x7fb66d830120 
| | | | | UITabBarSwappableImageView:0x7fb66d828260 
| | | | | UITabBarButtonLabel:0x7fb66d8303c0'Path' 
| | | UIButton:0x7fb66b63e820 
| | | | UIImageView:0x7fb66b4513c0 

Legend: 
    * - is laid out with auto layout 
    + - is laid out manually, but is represented in the layout engine because translatesAutoresizingMaskIntoConstraints = YES 
    • - layout engine host 

(lldb) 

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

ответ

0

Попробуйте разрешить его, используя ИЕРАРХИ В ПРОСМОТРЕ ПРОСМОТРА. Для более подробной информации перейдите по ссылке ниже - у нее есть лучшее решение для решения проблемы с этим типом ограничений.

Unable to simultaneously satisfy constraints, will attempt to recover by breaking constraint

+0

Спасибо, что была большая связь. Поскольку я загружал страницы через вкладку, он загружал все страницы, связанные с панелью вкладок, а не только указанный указатель. Поэтому я использовал (lldb) expr ((UIView *) 0x7f9ea3d43410) .backgroundColor = [UIColor redColor], чтобы выделить рассматриваемое представление, а затем ссылку, которую вы поделили, и указали идентификаторы и проследили все назад :) – WanderingScouse

+0

отлично! да, это ... –

0

пусть TBC = self.storyboard .instantiateViewController (withIdentifier: "MyTabController!"), Как! UITabBarController

Это должно быть имя вашего класса не UITabBarController

+0

Если я не использую UITabBarController, тогда UITabBarController не отображается. – WanderingScouse