0

视图控制器中最近的祖先self.navigationController.navigationBar和子视图是什么self.view,以便我可以将约束添加到该祖先?

self.searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero];
[self.searchBar setTranslatesAutoresizingMaskIntoConstraints:NO];
[self.view addSubview:self.searchBar];

NSLayoutConstraint* cn = [NSLayoutConstraint constraintWithItem:self.searchBar  
attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual 
toItem:self.navigationController.navigationBar attribute:NSLayoutAttributeBottom 
multiplier:1.0 constant:0];

我试着做

[self.view addConstraint:cn];
[self.navigationController.view addConstraint:cn];

但两次我都得到错误,“约束是否引用了视图子树之外的东西?那是非法的。”

有人可以解释与导航控制器相关的视图控制器的视图层次结构吗?

谢谢!

4

1 回答 1

1

视图树如下所示:

在此处输入图像描述

因此,navigationController.view 是导航栏和您的视图最接近的祖先。我不确定为什么那不起作用。你把那个代码放在哪里了?

于 2013-01-19T17:00:18.827 回答