关闭模态呈现的 ViewController 总是让我回到根目录

Posted

技术标签:

【中文标题】关闭模态呈现的 ViewController 总是让我回到根目录【英文标题】:Dismissing modally presented ViewController always throws me back to root 【发布时间】:2017-09-28 03:31:00 【问题描述】:

几个月来,我遇到了这个问题,有多个视图,Apple 提供的 ImagePicker 和 Storyboard 中的 VC 都提供了。

我相信这与我们在大多数视图中都有标签栏控制器和导航控制器的底层视图有关。

奇怪的是使用 pod 中的一些开源视图不会导致这个错误。

所以我在导航控制器上有两个视图,并在顶部以present(vc, animated: true, completion: ) 模态呈现另一个视图

像一个魅力一样工作,现在用dismiss(animated: true, completion: nil) 关闭该视图会让我一直回到导航控制器的初始视图或根视图,这两种情况之前都发生过,具体取决于呈现的视图。

更新: 构建一个示例项目,尝试重现该行为但失败。绘制简化图以更好地解释当前的错误行为。 还注意到,如果我在 Fandom 视图中更早一步调用 post 视图,它会按预期工作。

【问题讨论】:

调用dismiss 将关闭你调用它的视图控制器。但是,这里还不足以诊断您的问题。我建议你创建一个minimal, yet complete, verifiable example of the problem(一个 MCVE)。从一个空白项目开始,找出你需要添加什么来重现你的问题。但是,除非您向我们展示我们需要做些什么来重现您的问题,否则我们无能为力。 创建了简单的示例项目,显然它在那里按预期工作。我现在正在尝试调试入口点,这是一个相当大的项目,多人参与过,所以我不太确定在哪里、何时或什么破坏了它。当我找到更多信息时会更新 另一种方法是获取当前项目的副本并开始删除不相关的内容,在进行过程中重复测试以查看问题是否仍然存在。在该过程中,您可能会确定导致问题的原因。 【参考方案1】:

在我的情况下,我使用的是 UITabBarController,并且我在 UITabBarController 的 viewWillAppear 中编写了代码

self.selectedIndex = 2

因此,当我从父级为 UITabBarController 的任何控制器中呈现任何内容时,当我关闭它时,它会自动打开 UITabBarController 的第三个选项卡。

也许您明确编写了任何代码来选择 TabBar 的特定索引。

也许这对你或其他人有用。

【讨论】:

以上是关于关闭模态呈现的 ViewController 总是让我回到根目录的主要内容,如果未能解决你的问题,请参考以下文章

关闭模态呈现的 VC 和弹出呈现的 VC

关闭呈现模式 ViewController

呈现模态视图总是失败

Storyboard Modal ViewController 不会关闭;已经尝试了一切

需要协助解除模态呈现的 ViewController 并从 UINavigationController 弹出 ViewController

从模态 ViewController 呈现 UIImagePickerController