使用堆栈的导航控制器/视图控制器

时间:2015-03-14 18:15:30

标签: iphone xcode swift uiviewcontroller uinavigationcontroller

我正在尝试使用Xcode使用Swift编程语言创建iPhone游戏应用程序。我将项目创建为单视图应用程序,我一直在添加视图控制器,并使用Storyboard将它们与segue连接起来。

从我所了解的数小时的工作(比迟到的更好),是VC不使用堆栈,而连接到其他VC的导航控制器确实使用堆栈。因此,假设没有使用导航控制器,如果我使用" show"从一个VC到另一个VC,它不会将正在进行的VC推送到启动segue的VC上。相反,它将以模态方式显示"。

我对此有几个问题。

  1. 当我在VC之间移动时,如果他们没有使用堆栈,会发生什么?例如,当我从一个VC移动到另一个VC时,先前的VC是从内存中移除的,还是当我在它们之间移动时,内存是否继续占用越来越多的VC?

  2. 由于VC最初没有导航控制器而无法从堆栈弹出,有没有办法防止我的应用程序崩溃,例如在VC之间划分的特定方式?

  3. 在单视图应用程序/选项卡式应用程序等中创建项目时,这是否会影响应用程序无限期执行的操作,或者Xcode是否只是创建一个基本模板?例如,我可以从单视图应用程序开始,但将其转换为选项卡式应用程序吗?我认为答案是肯定的,但确认总是很好。

  4. 非常感谢有关这些问题的任何信息! 谢谢!

1 个答案:

答案 0 :(得分:0)

  

当我在VC之间移动时会发生什么,如果不是的话   使用堆栈?例如,当我从一个VC移动到另一个VC时,是   先前的VC从内存中删除,或者内存是否继续使用   当我在他们之间移动时,越来越多的VC副本?

之前的VC留在内存中。每个新的segue都会创建一个新的VC。

  

由于VC最初没有初始化而无法从堆栈中弹出   导航控制器,有什么办法可以防止我的应用崩溃,   比如在VC之间划分的特定方式?

只有一种不创建新VC的segue类型,即unwind segue。您可以使用它返回上一个VC。搜索Stack Overflow for“unwind segue”以查看如何设置它。

  

在单视图应用程序/选项卡中创建项目时   应用程序等,这是否会影响应用程序的功能   无限期地做,或Xcode只是创建一个基本模板   从...开始?例如,我可以从单视图开始   应用程序,但将其变成选项卡式应用程序?我假设了   答案是肯定的,但确认总是很好。

模板只是为适合该模板类型的Storyboard和ViewControllers启动。您可以轻松删除或修改它们以更改应用程序的功能。