例如,我有baseVC,firstVC和secondVC。 BaseVC是最初显示的唯一VC,然后当用户按下baseVC中的按钮时,他们会看到第二个VC呈现。当他们解雇第二个VC时,他们会看到第一个VC。当他们解雇firstVC时,他们会再次看到baseVC。
换句话说,我想一次呈现两个视图控制器,一个在另一个之上。我希望它像显示单个视图控制器一样动画。
这似乎是最初明显的解决方案:
//Presents secondVC over firstVC, currently off-screen.
firstVC.presentViewController(secondVC, animated: false, completion: nil)
//Presenting firstVC brings firstVC and secondVC onscreen.
baseVC.presentViewController(firstVC, animated: true) {
() -> Void in
}
这样做会给我一个错误:
警告:尝试出示谁的 视图不在窗口层次结构中!
而我所看到的而不是我的结果只是第一次呈现。
我怎样才能做到这一点?
编辑:这些应该以模态显示。
答案 0 :(得分:1)
您可以执行以下操作,而不是同时显示两个视图控制器:
var vcs = self.navigationController.viewControllers.mutableCopy();
vcs.addObject(firstVc);
vcs.addObject(secondVc);
self.navigationController.setViewControllers(vcs, animated:false);
抱歉,如果语法错误。我仍然在Objective-C
中编码然后给它像这样的模态效果: Showing pushviewcontroller animation look like presentModalViewController
答案 1 :(得分:-1)
您可以通过以下方式尝试:
由于我现在只能编写Objective-c代码,我无法为这种情况提供快速代码。
一般注意事项:尝试在navigationControllers中使用push ...和pop ...而不是present ...
// in your baseVC
- (void)pushButton:(id)sender {
[self presentViewController:secondVC animated:true completion:nil];
}
// in your secondVC
- (void)backButtonAction:(id)sender {
[self presentViewController:firstVC animated:true completion:nil];
}
// in your firstVC
- (void)backButtonAction:(id)sender {
[baseVC dismissViewControllerAnimated:true completion:nil];
}
关于如何知道backButton事件,请查看Trying to handle "back" navigation button action in iOS