Jos*_*ane 27 embed iphone objective-c uiviewcontroller ios
我有一个UIViewController带有容器视图的Storyboard设置,以便我可以在其中嵌入另一个UIViewController.
在某种情况下,我需要更改嵌入式视图控制器.在我的故事板中,我不能从容器视图中获得两个segue(只有一个嵌入segue).这导致我以编程方式进行.
我在我的故事板中有我的容器视图,没有连接嵌入segue.
现在从这一点开始,我如何以编程方式嵌入我选择的UIViewController对象?
Adn*_*tab 34
您可以通过编程方式执行此操作,下面的方法将采用bool值来决定哪个视图控制器需要在容器视图中添加,然后将实例化一个对象,然后将其添加到 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;
}
Run Code Online (Sandbox Code Playgroud)
需要从容器视图控制器中删除视图控制器时,可以执行此操作
[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
Run Code Online (Sandbox Code Playgroud)
关于容器视图控制器的Apple文档
| 归档时间: |
|
| 查看次数: |
16024 次 |
| 最近记录: |