我有一个MainViewController,里面有一个ContainerView,它显示了ViewControllerA。
在ContainerView中是否有从UIViewControllerA到UIViewControllerB的方法?
层次结构是:
MainViewController -> containerView
ViewControllerA -> btnShowViewControllerB
ViewControllerB
代码是:
// MainViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
// Show ViewControllerA in the ContainerView programmatically
ViewControllerA *vcA = [self.storyboard instantiateViewControllerWithIdentifier:@"A"];
[self addChildViewController:vcA];
[self.containerView addSubview:vcA.view];
[vcA didMoveToParentViewController:self];
}
// ViewControllerA.m
- (IBAction)btnShowViewControllerB:(UIButton *)sender {
}
谢谢
答案 0 :(得分:0)
这是以编程方式切换viewControllers的方法:
[self addChildViewController:nextViewController];
nextViewController.view.frame = view.bounds;
[view addSubview:nextViewController.view];
[nextViewController didMoveToParentViewController:self];
答案 1 :(得分:0)
您需要在容器视图控制器中进行转换调用。如果按钮操作在ViewControllerA中,那么你需要一种方法来告诉容器视图控制器,"嘿 - 现在是时候交换视图控制器"。通常,这是由代表完成的。 This question详细介绍了如何设置和使用委托。一旦你的容器知道进行交换,你可以使用容器视图控制器中的这样的调用来设置它的动画:
[self addChildViewController:viewControllerB];
[self transitionFromViewController:viewControllerA
toViewController:viewControllerB
duration:0.3
options:UIViewAnimationOptionCurveEaseIn
animations:^{
viewControllerB.view.alpha = 1;
viewControllerA.view.alpha = 0;
} completion:^(BOOL finished) {
[viewControllerA removeFromParentViewController];
}];