以编程方式embeddedUIViewController?

我有一个带有容器视图的UIViewController的Storyboard设置,这样我就可以在其中embedded另一个UIViewController

在某些情况下,我需要更改embedded的视图控制器。 在我的故事板中,我的容器视图中不能有两个segues(只有一个embedded的segue)。 这导致我以编程方式进行。

我在我的故事板没有连接embeddedsegue我的容器视图。

现在从这一点,我怎样才能以编程方式embedded我select的UIViewController对象?

你可以通过编程的方式来做到这一点,下面是一个方法,它将采取一个布尔值来决定哪个视图控制器需要添加在容器视图,然后将实例化一个对象,然后将它添加到containerView

 - (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; } 

当你需要从容器视图控制器中删除视图控制器,你可以做到这一点

  [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关于容器视图控制器的文档