Sie können dies tun, indem sie programmatisch, unten ist die Methode, die einen Bool Wert nehmen Entscheidung zu treffen, die Controller in der Containeransicht müssen Ansicht hinzugefügt werden und wird dann ein Objekt instanziiert und danach wird es zu containerView
hinzufügen
- (void)addViewControllerToContainerView:(BOOL)addVC1
{
// Get storyboard
UIStoryboard *storyBoard = [UIStoryboard storyboardWithName:@"<name of storyboard>" bundle:[NSBundle mainBundle]];
UIViewController *viewController = nil;
if (addVC1)
{
// get viewController with identifier
viewController = [storyBoard instantiateViewControllerWithIdentifier:@"<View Controller 1 Identifier>"];
}
else
{
viewController = [storyBoard instantiateViewControllerWithIdentifier:@"<View Controller 2 Identifier>"];
}
// lets add it to container view
[viewController willMoveToParentViewController:self];
[self.view addSubview:viewController.view];
[self addChildViewController:viewController];
[viewController didMoveToParentViewController:self];
// keep reference of viewController which may be useful when you need to remove it from container view, lets consider you have a property name as containerViewController
self.containerViewController = viewController;
}
Wenn Sie view-Controller aus dem Container-view-Controller entfernen möchten, können Sie tun, um diese
[self.containerViewController willMoveToParentViewController:nil]; // 1
self.containerViewController.view removeFromSuperView];
[self.containerViewController removeFromParentViewController];//this line is updated as view is removed from parent view cotnroller istead of its viewcontroller is removed from parentViewController
self.containerViewController = nil
Apple docs über Container view-Controller
Danke für die umfassende Antwort. Leider funktioniert es nicht so, wie ich es mir vorgestellt habe. Zuerst muss ich einen 'UIViewController' in einer' UIView' des root 'UIViewController' aktivieren. Dies füllt die gesamte Ansicht. Zweitens, wenn ich es als Teilansicht der 'UIView' (anstelle der gesamten VC-Ansicht) hinzufüge, entspricht es nicht den automatischen Layout-Einschränkungen, wie sie vom Storyboard eingebettet wären. –
Dieses Ding ist erreichbar dieser Ansatz, und deshalb gibt es Konzept von Kind und Eltern View-Controller, wenn Sie einen View-Controller als Kind View-Controller hinzufügen werden Sie alle anderen Lifecycle-Methoden in Kind VC aufgerufen werden, und sicherlich AutoLayoutWill funktioniert auch . –
Ich habe einen Link zu Apple Docs hinzugefügt, der beschreibt, wie man Container View Controller implementiert –