关闭和呈现视图控制器 - 一个解释?

Dismissing and presenting View Controllers - An Explanation?

最近,我一直在阅读有关关闭和显示视图控制器背后的概念。我已经能够接受从目标 View Controller 中删除以前的 View Controller 的想法,但是我找不到一些已经在我脑海中萦绕了很久的问题的答案。

我主要对何时需要关闭 View Controller 以及何时不需要关闭的想法感到困惑。

如果有人能帮我解决这些问题,我将不胜感激。

1) 当你从登录控制器转到第二个控制器时,你只需要存在 second controller 不需要先 dismiss 因为如果你使用 navigation controller 作为一部分在您的 segue 中,所有 view controllers 都以 stack 的形式排列。因此,如果您需要从secondfirst 你可以 dismiss 你的控制器或 pop 你的 controller.When 你 dismiss 控制器它不是 poppedstack 而只是移动后面,让第一个控制器top,当你pop 一个 控制器 也将自己从堆栈中移除

2) 当你从第一个控制器.

场景 1:执行 segue 后,它会在您的视图控制器之间切换[自动关闭当前 ViewController 并显示一个新视图控制器]。 因此,没有理由关闭登录页面。

场景 2:不,您不需要关闭 VC1。

如您所知,一旦用户登录,登录屏幕只有在用户注销后才会打开。所以你应该从堆栈中删除登录视图控制器,它不应该保留在内存中。对于此任务,不要直接执行 segue,您应该更改根视图控制器。关于 How to change root view controller? 在 Whosebug 上有很多答案。

如果有一个在大多数情况下只会被使用一次的视图控制器(比如登录或设置等)——尤其是当你用完它之后,return到你之前使用的视图控制器——最好是模态地呈现它并在你完成后将其关闭。其余的视图控制器在用户无法再看到它们后保留在内存中,这是预期的行为,因为 Apple 创建了用于呈现和关闭视图控制器的方法。

据我了解,在 Android 世界中,情况并非如此——默认情况下,当出现新视图控制器时,旧视图控制器确实会消失。