解雇和呈现视图控制器 - 解释?

时间:2017-03-13 03:43:11

标签: ios viewcontroller

最近,我一直在阅读解雇和呈现View Controller背后的概念。我已经能够了解从目标View Controller中解除之前的View Controller的想法,但我找不到一些问题的答案,这些问题已经在我脑海中浮现了很多。

  • 场景1:我有一个登录页面,在用户输入凭据后,它会对另一个View Controller执行segue。是否有必要在之后解除登录页面或没有理由?

  • 场景2:我有两个普通的视图控制器(VC1和VC2)。如果我对VC2执行segue,我是否需要解雇VC1?

我对于何时需要关闭View Controllers以及何时没有必要这样做感到困惑。

如果有人能帮我解决这些问题,我会很感激。

4 个答案:

答案 0 :(得分:1)

1)当您从登录控制器转到第二个控制器时,您只需显示 第二个控制器并且首先不需要解雇,因为如果您使用导航控制器作为 segue 的一部分视图控制器 >以堆栈的形式排列。所以第二排在首位,第一 。如果你需要从第二首先你可以解雇你的控制器或弹出你的控制器。当你解雇一个控制器时,它不会弹出来自堆栈,只需将移至后,让第一个控制器进入顶部,当您< strong> pop 控制器也会从堆栈中删除

2)第二个问题也是如此,当你从第一个控制器转到第二个控制器时,不需要首先解雇

答案 1 :(得分:1)

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

场景2:不,你不需要解雇VC1。

答案 2 :(得分:1)

如果有一个视图控制器,在大多数情况下只会使用一次(如登录或设置等) - 尤其是在完成它之后,返回到视图控制器是有意义的在之前 - 最好的是以模态方式呈现它并在你完成时将其解雇。在用户无法再看到它们之后,其余的视图控制器将保留在内存中,并且这是预期的行为,因为Apple已经创建了用于呈现和解除视图控制器的方法。

我的理解是,在Android世界中,情况并非如此 - 默认情况下,当呈现新的视图控制器时,旧视图控制器确实会消失。

答案 3 :(得分:0)

如您所知,一旦用户登录,登录屏幕就不会打开,直到用户退出。所以你应该从堆栈中删除登录视图控制器,它不应该保留在内存中。对于此任务,不要直接执行segue,您应该更改根视图控制器。 stackoverflow上有很多关于如何更改根视图控制器的答案?