Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 取消并显示视图控制器-一种解释?_Ios_Viewcontroller - Fatal编程技术网

Ios 取消并显示视图控制器-一种解释?

Ios 取消并显示视图控制器-一种解释?,ios,viewcontroller,Ios,Viewcontroller,最近,我一直在阅读有关取消和显示视图控制器背后的概念。我已经能够接受从目标视图控制器中删除前一个视图控制器的想法,但是我找不到几个问题的答案,这些问题已经在我脑海中萦绕了很久 场景1:我有一个登录页面,在用户输入他们的凭据后,它执行到另一个视图控制器的切换。之后是否有必要关闭登录页面,或者没有理由关闭 场景2:我有两个普通视图控制器(VC1和VC2)。如果我执行到VC2的转换,是否需要关闭VC1 对于何时需要关闭视图控制器以及何时不需要关闭视图控制器,我主要感到困惑 如果有人能帮我澄清这些问

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

  • 场景1:我有一个登录页面,在用户输入他们的凭据后,它执行到另一个视图控制器的切换。之后是否有必要关闭登录页面,或者没有理由关闭

  • 场景2:我有两个普通视图控制器(VC1和VC2)。如果我执行到VC2的转换,是否需要关闭VC1

对于何时需要关闭视图控制器以及何时不需要关闭视图控制器,我主要感到困惑

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

1)当你从登录控制器转到第二个控制器时,你只需展示第二个控制器,无需首先解除,因为如果你正在使用导航控制器作为序列的一部分所有视图控制器都以堆栈的形式排列。因此,second位于顶部,而first位于之下。现在,如果需要从secondfirst的话,你可以解除你的控制器或者弹出你的控制器。当你解除控制器时,它不是堆栈中弹出只需移动后面,让第一个控制器进入顶部,当你弹出一个控制器时,它也会从堆栈中移除自己


2) 第二个问题也是如此,当您从第一个控制器转到第二个控制器时,无需取消第一个

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


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

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

如果有一个视图控制器,在大多数情况下只使用一次(如登录或设置等)-尤其是在使用完之后,返回到以前使用过的视图控制器是有意义的-最好是以模式显示它,并在完成后关闭它。在用户看不到视图控制器后,视图控制器的其余部分将保留在内存中,鉴于苹果创建了显示和取消视图控制器的方法,这是预期的行为


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

也许问一下这个问题会有所帮助-您是在堆叠控制器还是在它们之间切换?对于前者,您可能使用segues。在后一种情况下,可能不会。