从另一个 Popover 中关闭显示为 Popover segue 的 ViewController

Posted

技术标签:

【中文标题】从另一个 Popover 中关闭显示为 Popover segue 的 ViewController【英文标题】:Dismissing a ViewController shown as Popover segue from within another Popover 【发布时间】:2017-03-08 12:44:16 【问题描述】:

我的故事板使用UINavigationController(VC0),我继续使用UIPopover 加载新的UIViewController (VC1)。从这个新的UIViewController,我跳到一个新的UIViewController (VC2)。当我尝试关闭这个最新的弹出窗口时,我将退出UINavigationController

我在 VC0 中使用的代码将 VC1 显示为弹出框,VC1 到 VC2 是相同的代码(尽管标识符不同):

[self performSegueWithIdentifier:@"titlePopover" sender:self];

我在 VC2 中用来关闭弹出框的代码是:

UIViewController *vc = [self presentingViewController];
[self dismissViewControllerAnimated:YES completion:^
    [[vc presentingViewController] dismissViewControllerAnimated:YES completion:nil];
];

它的作用是关闭 VC2,显示 VC1 片刻,然后关闭 VC1 并返回到 VC0。我希望能够只关闭 VC2,以便我在 VC1 上

【问题讨论】:

您只想解雇 VC2 而不是 VC1? @NiravD,是的。只需关闭 VC2 下面的答案对你有帮助吗? @NiravD 是的,[self dismissViewControllerAnimated:YES completion:nil]; 对我有用。 【参考方案1】:

如果您以模态方式执行sugue,请使用代码导航返回:

[self dismissViewControllerAnimated:YES completion:nil];

如果执行推送segue,使用代码导航返回:

[self.navigationController popViewControllerAnimated:YES];

【讨论】:

[self dismissViewControllerAnimated:YES completion:nil]; 在我的情况下为我工作。谢谢 乐于助人:)

以上是关于从另一个 Popover 中关闭显示为 Popover segue 的 ViewController的主要内容,如果未能解决你的问题,请参考以下文章

在附加的视图控制器中关闭 Popover segue

如何从另一个活动或底部工作表对话框/片段中关闭一个活动

Kivy:从另一个弹出窗口中关闭一个弹出窗口

如何从父关闭按钮单击事件打开的子对话框中关闭父对话框?

如何在线程中关闭 QWebSocket?

Ionic 从另一个组件打开 Popover