2

假设我基于 A 呈现模态视图 B,然后基于 B 呈现模态视图 C。

有什么办法可以同时解雇 B 和 C 并直接返回 A 吗?

4

4 回答 4

5

假设您在 XCode4.5 中使用故事板,您可以使用新的展开转场。实施

 -(IBAction)back:(UIStoryboardSegue*)segue

在 A. 中(您可以将函数定义留空。)然后在 C 的控制器中右键单击新的退出图标并将新条目连接到将启动展开的控件。

于 2012-10-11T22:54:27.343 回答
5

是的,我有一些解决方案,可能有点脏,但你可以解决

UIViewController* vc = self;

while (vc) {
    UIViewController* temp = vc.presentingViewController;
    if (!temp.presentedViewController) {
        [vc dismissViewControllerAnimated:YES completion:^{}];
        break;
    }
    vc =  temp;
}

您可以从堆栈中的任何模型控制器调用它,所有这些都将被解雇。我们只是在寻找第二个,然后将其关闭。

于 2012-10-11T23:16:04.560 回答
2

是的,你可以调用 [B dismissModalViewControllerAnimated:YES];

这将解雇 B。当然,如果从 B 提出 C,它也会被解雇。

而且,这里是相对问题,它包含完整的答案。 iPhone - 关闭多个 ViewController

于 2012-10-11T22:45:58.540 回答
0

如果有2 ViewContronllers,那么:

[self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

如果有3 个ViewController,则:

self.presentingViewController.presentingViewController.presentViewController

于 2017-03-22T06:37:04.083 回答