【问题标题】:Navigation Controllers/View Controllers working with a stack使用堆栈的导航控制器/视图控制器
【发布时间】:2015-05-17 03:06:09
【问题描述】:

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

经过数小时的研究(迟到总比没有好),我了解到,VC 不使用堆栈,而连接到其他 VC 的导航控制器确实使用堆栈。因此,假设没有使用导航控制器,如果我使用从一个 VC 到另一个 VC 的“显示”转场,它不会将正在进行的 VC 推送到启动转场的 VC 上。它将改为“模态”显示。

我对此有几个问题。

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

  2. 由于 VC 在最初没有导航控制器的情况下无法从堆栈中弹出,是否有任何方法可以防止我的应用程序崩溃,例如在 VC 之间进行分隔的特定方法?

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

非常感谢您提供有关这些问题的任何信息! 谢谢!

【问题讨论】:

    标签: iphone xcode swift uiviewcontroller uinavigationcontroller


    【解决方案1】:

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

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

    因为 VC 在没有初始值的情况下不能从堆栈中弹出 导航控制器,有什么办法可以防止我的应用程序崩溃, 比如在 VC 之间有什么特殊的隔阂?

    只有一种转场类型不会创建新的 VC,那就是展开转场。您使用它返回到以前的 VC。在 Stack Overflow 中搜索“unwind segue”以了解如何设置。

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

    模板只是让您从适合该模板类型的 Storyboard 和 ViewController 开始。您可以轻松删除或修改它们以更改您的应用程序的功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-04
      • 2012-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多