我得到了View A present -> Modal View B, B present -> Modal View C Modal View D -> Modal View E
。这是一个主视图 A ,然后是Modal视图的继承。
所以每次我提出新的模态 C或D 我想要解雇前一个模式(这样当我关闭新的模态时它将显示我的主视图A总是不是以前的模态)。
我试过这段代码:
if (_openNextView) {
if ([[NSUserDefaults standardUserDefaults] stringForKey:@"generatedCode"]) {
NSLog(@"generated Code %@ : ", [[NSUserDefaults standardUserDefaults] stringForKey:@"generatedCode"]);
NSLog(@"phone Number %@ : ", [[NSUserDefaults standardUserDefaults] stringForKey:@"phoneNumber"]);
// Present C View
RegisterSecondViewController *registerSecond = [[RegisterSecondViewController alloc] initWithNibName:@"RegisterSecondViewController" bundle:nil];
//[self presentNatGeoViewController:registerSecond];
[self presentViewController:registerSecond animated:YES completion:nil];
} else {
RegisterFirstViewController *registerFirst = [[RegisterFirstViewController alloc] initWithNibName:@"RegisterFirstViewController" bundle:nil];
//present D view
//[self presentNatGeoViewController:registerFirst];
[self presentViewController:registerFirst animated:YES completion:nil];
}
// Dismiss privious View (the current view before presenting new one)
[self.parentViewController dismissViewControllerAnimated:YES completion:nil];
此外,我还在新呈现的模态视图中添加此代码
[self.presentingViewController dismissViewControllerAnimated:YES completion:nil];
但没有奏效,观点也没有被驳回
答案 0 :(得分:1)
我会以模态方式呈现div some_id some_class
并使用它来呈现内容视图。然后,当您当前提供新的模态视图时,您只需设置导航控制器的div #some_id .some_class
(动画)。
这将为您提供设置过程中的进展动画视图,但不允许用户返回,并在完成后取消分配VC。
答案 1 :(得分:0)
UIViewController
有一个名为presentedViewController
的属性:
presentedViewController
属性视图控制器 由视图控制器或视图中的一个祖先呈现 控制器层次。 (只读)
这意味着,您只能在给定时间呈现一个模态控制器。为了呈现另一个,你需要首先解除当前的一个。
如果您想要自定义导航,我建议您创建一个自定义容器视图控制器,因为正常的模式演示不适合您的用例。 Here是Apple的指南。
答案 2 :(得分:0)
您可以在呈现新的vc之后关闭当前的vc。试试这个:
[self presentViewController:vc animated:YES completion:^{
if (self.presentingViewController != nil) {
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[self dismissViewControllerAnimated:NO completion:nil];
});
}
}];