在父ViewController中使用以下代码,我想在第一个上面显示第二个视图,然后关闭第一个:
// Animates the next questionViewController using the first questionViewController
[previousView presentViewController:nextQuestionViewController animated:YES completion:nil];
// Dismiss the first questionViewController
[previousView dismissViewControllerAnimated:NO completion:nil];
运行时,会显示第二个视图,但第一个视图不会被忽略。
答案 0 :(得分:12)
您需要首先关闭“previousView”&然后出现“nextQuestionViewController”:
// Dismiss the first questionViewController
[previousView dismissViewControllerAnimated:NO completion:nil];
// Animates the next questionViewController using the first questionViewController
[previousView presentViewController:nextQuestionViewController animated:YES completion:nil];
答案 1 :(得分:4)
尝试
[self dismissViewControllerAnimated:NO completion:nil];
失败:
[self.navigationController popViewControllerAnimated:YES];
答案 2 :(得分:2)
我做了下一步(自我 - 是你的老控制者):
UIStoryboard *storyboard = self.storyboard;
[self dismissViewControllerAnimated:YES
completion:^{
UIViewController *newController = [storyboard instantiateViewControllerWithIdentifier:@"newControllerStoryboardId"];
newController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
[[UIApplication sharedApplication].keyWindow.rootViewController presentViewController:newController animated:YES completion:nil];
}];
答案 3 :(得分:0)
最好使用“放松搜索”:
https://developer.apple.com/library/archive/technotes/tn2298/_index.html
它允许您同时关闭多个视图控制器,而不必知道堆栈中有多少个。而且,如果没有提供的视图控制器对需要导航回何处的专门知识(即您不必直接与窗口的根视图控制器联系),就可以了。
假设您有一个名为VC1的根视图控制器,第一个模式是VC2,第二个模式是VC3。
在VC1中,您将实现一个名为IBAction
的{{1}}。然后,在VC3的情节提要中,将完成按钮连接到unwindToRoot
对象,然后选择Exit
操作。
按下该按钮时,系统将关闭将您带回到VC1所需的所有视图控制器。
因此,基本上,您只是将所有这些VC堆叠在一起,当您完成所有操作后,就将所有内容都退还给了根VC。
答案 4 :(得分:-2)
似乎不能在没有短暂显示A的情况下从B到C,这看起来不专业。但是,您可以将黑色子视图放在A的顶部,直到您将其设置为C。
上的答案