我有一个主视图控制器,在该视图控制器内部,我将另一个视图控制器显示为其子视图控制器。显示子视图控制器的代码如下所示。self.currentController是将位于主控制器内部的子控制器。
self.addChildViewController(self.currentController!)
self.currentController?.view.frame = self.operationView.bounds
self.currentController?.view.layoutIfNeeded()
self.operationView.addSubview((self.currentController?.view!)!)
self.setNeedsStatusBarAppearanceUpdate()
现在,我想使用以下代码在子视图控制器内执行show segue(另一个控制器,称为ThirdController):
performSegueWithIdentifier("ShowSegue", sender: nil)
在执行此操作时,ThirdController将全屏显示。我要做的是在子控制器位置显示第三个控制器。我怎样才能做到这一点?
好的,抱歉,我不知道如何在Swift中编写答案。因此,我只向您展示我的解决方案是如何在Objective-C中完成的。
加载第一个子视图的代码:
- (void)loadASubview
{
subview = [self.storyboard instantiateViewControllerWithIdentifier:@"FirstView"];
[self addChildViewController:subview];
[self.view addSubview:subview.view];
[subview didMoveToParentViewController:self];
[subview.view setFrame:self.view.bounds];
}
卸载子视图的代码:
- (void)unloadASubview
{
[subview willMoveToParentViewController:nil];
[subview.view removeFromSuperview];
[subview removeFromParentViewController];
}
最初,当我需要加载子视图A时,我将简单地调用loadASubview。之后,如果需要加载另一个子视图,则在加载新的子视图之前,将通过调用unloadASubview来卸载先前加载的子视图。
请注意,函数内部的“ subview”变量是在外部声明的。
我希望这能帮到您。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句