在Xcode 6中,我试图在导航控制器内托管的视图控制器中添加容器视图。但是在Objects库中没有容器视图选项。我没有使用故事板只是一个普通的xib。容器视图是否仅与故事板相关。在这种情况下,我只使用正常的UIView
吗?
答案 0 :(得分:2)
UIContainerView
嵌入子视图控制器。 Interface Builder期望显示容器视图嵌入的子视图控制器 - 这在故事板中可以正常工作,但是使用XIB是不可能的,因为它们只能显示单个视图控制器。
如果你绝对不能在你的项目中使用故事板(你真的应该,它们很棒!),你最好的选择是使用UIView
作为占位符并通过代码添加子视图控制器。
这是我在UIViewController
上使用的一个方便的类别,用于处理将子视图控制器添加到占位符视图的所有细节。
- (void)addContentController:(UIViewController*)viewController inView:(UIView *)inView
{
viewController.view.translatesAutoresizingMaskIntoConstraints = NO;
[self addChildViewController:viewController];
[inView addSubview:viewController.view];
NSDictionary *viewsDict = @{@"presentedView" : viewController.view};
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[presentedView]|" options:0 metrics:nil views:viewsDict];
[inView addConstraints:constraints];
constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[presentedView]|" options:0 metrics:nil views:viewsDict];
[inView addConstraints:constraints];
[viewController didMoveToParentViewController:self];
}
答案 1 :(得分:0)
容器视图用于嵌入另一个视图控制器。
Xib用于单个视图/视图控制器,因此您无法嵌入另一个视图控制器。
您可以在Xib中使用占位符视图,并以编程方式添加使用addChildViewController:
嵌入第二个视图控制器,并使用addSubview:
添加它的视图。