关闭和呈现视图控制器 - 一个解释?
Dismissing and presenting View Controllers - An Explanation?
最近,我一直在阅读有关关闭和显示视图控制器背后的概念。我已经能够接受从目标 View Controller 中删除以前的 View Controller 的想法,但是我找不到一些已经在我脑海中萦绕了很久的问题的答案。
场景 1:我有一个登录页面,在用户输入他们的凭据后,它执行到另一个 View Controller 的 segue。之后是否有必要关闭登录页面,或者没有理由?
场景 2:我有两个普通的视图控制器(VC1 和 VC2)。如果我对 VC2 执行 segue,是否需要关闭 VC1?
我主要对何时需要关闭 View Controller 以及何时不需要关闭的想法感到困惑。
如果有人能帮我解决这些问题,我将不胜感激。
1) 当你从登录控制器转到第二个控制器时,你只需要存在 second controller 不需要先 dismiss 因为如果你使用 navigation controller 作为一部分在您的 segue 中,所有 view controllers 都以 stack 的形式排列。因此,如果您需要从second 到 first 你可以 dismiss 你的控制器或 pop 你的 controller.When 你 dismiss 控制器它不是 popped 从 stack 而只是移动在后面,让第一个控制器来top,当你pop 一个 控制器 它 也将自己从堆栈中移除 。
2) 当你从第一个控制器.
场景 1:执行 segue 后,它会在您的视图控制器之间切换[自动关闭当前 ViewController 并显示一个新视图控制器]。
因此,没有理由关闭登录页面。
场景 2:不,您不需要关闭 VC1。
如您所知,一旦用户登录,登录屏幕只有在用户注销后才会打开。所以你应该从堆栈中删除登录视图控制器,它不应该保留在内存中。对于此任务,不要直接执行 segue,您应该更改根视图控制器。关于 How to change root view controller? 在 Whosebug 上有很多答案。
如果有一个在大多数情况下只会被使用一次的视图控制器(比如登录或设置等)——尤其是当你用完它之后,return到你之前使用的视图控制器——最好是模态地呈现它并在你完成后将其关闭。其余的视图控制器在用户无法再看到它们后保留在内存中,这是预期的行为,因为 Apple 创建了用于呈现和关闭视图控制器的方法。
据我了解,在 Android 世界中,情况并非如此——默认情况下,当出现新视图控制器时,旧视图控制器确实会消失。
最近,我一直在阅读有关关闭和显示视图控制器背后的概念。我已经能够接受从目标 View Controller 中删除以前的 View Controller 的想法,但是我找不到一些已经在我脑海中萦绕了很久的问题的答案。
场景 1:我有一个登录页面,在用户输入他们的凭据后,它执行到另一个 View Controller 的 segue。之后是否有必要关闭登录页面,或者没有理由?
场景 2:我有两个普通的视图控制器(VC1 和 VC2)。如果我对 VC2 执行 segue,是否需要关闭 VC1?
我主要对何时需要关闭 View Controller 以及何时不需要关闭的想法感到困惑。
如果有人能帮我解决这些问题,我将不胜感激。
1) 当你从登录控制器转到第二个控制器时,你只需要存在 second controller 不需要先 dismiss 因为如果你使用 navigation controller 作为一部分在您的 segue 中,所有 view controllers 都以 stack 的形式排列。因此,如果您需要从second 到 first 你可以 dismiss 你的控制器或 pop 你的 controller.When 你 dismiss 控制器它不是 popped 从 stack 而只是移动在后面,让第一个控制器来top,当你pop 一个 控制器 它 也将自己从堆栈中移除 。
2) 当你从第一个控制器.
场景 1:执行 segue 后,它会在您的视图控制器之间切换[自动关闭当前 ViewController 并显示一个新视图控制器]。 因此,没有理由关闭登录页面。
场景 2:不,您不需要关闭 VC1。
如您所知,一旦用户登录,登录屏幕只有在用户注销后才会打开。所以你应该从堆栈中删除登录视图控制器,它不应该保留在内存中。对于此任务,不要直接执行 segue,您应该更改根视图控制器。关于 How to change root view controller? 在 Whosebug 上有很多答案。
如果有一个在大多数情况下只会被使用一次的视图控制器(比如登录或设置等)——尤其是当你用完它之后,return到你之前使用的视图控制器——最好是模态地呈现它并在你完成后将其关闭。其余的视图控制器在用户无法再看到它们后保留在内存中,这是预期的行为,因为 Apple 创建了用于呈现和关闭视图控制器的方法。
据我了解,在 Android 世界中,情况并非如此——默认情况下,当出现新视图控制器时,旧视图控制器确实会消失。