代码之家  ›  专栏  ›  技术社区  ›  dwesty17

在iOS中,初始视图控制器始终与根视图控制器相同

  •  1
  • dwesty17  · 技术社区  · 11 年前

    在苹果公司的“今日开始开发iOS应用程序”指南中,它说,“添加到(导航)堆栈的第一个项目是根视图控制器,并且永远不会从堆栈中弹出。”随后在同一节中,它继续说道,“其中一个视图控制器被标记为初始视图控制器……这是应用程序首次启动时将显示的视图控制器。”

    我的问题是,初始视图控制器和根视图控制器总是相同的,还是它们可以不同?例如,如果您创建了一个游戏,其中根视图控制器是您玩游戏的视图,您是否可以使用不同的控制器(可能是开始屏幕)作为初始视图控制器,这将如何工作?

    3 回复  |  直到 11 年前
        1
  •  3
  •   Caleb    11 年前

    例如,如果您创建了根视图控制器所在的游戏 你玩游戏的地方会有不同的 控制器(可能是开始屏幕)是初始视图控制器, 这将如何运作?

    为了便于论证,我们假设游戏使用导航控制器来管理其各种视图控制器。在这种情况下,导航控制器可能是 最初的 视图控制器以及窗口的 视图控制器。游戏板视图控制器可能是导航控制器的 视图控制器。

    如果您想在游戏开始时显示“游戏开始”视图控制器,至少有三个合理的选项:

    1. 使游戏开始视图控制器成为导航控制器的根 当用户开始游戏时,将游戏板控制器安装到导航堆栈上。

    2. 以模态方式呈现游戏开始视图控制器,当用户想要开始游戏时将其关闭。

    3. 使游戏开始视图控制器成为初始视图控制器(以及窗口的根视图控制器),然后 目前 导航控制器(以游戏板视图控制器为根)。

    所以不,“初始”视图控制器不需要是用户实际首先看到的视图控制器,它只是从故事板中首先加载的视图控制器。它可能包含其他视图控制器,也可能导致立即显示其他视图控制器。

        2
  •  3
  •   Aaron Brager    11 年前

    这里有两个根视图控制器:

    1. 应用程序的密钥 UIWindow rootViewController 。(大多数应用程序只有一个 UI窗口 但有些人不止一个。)
    2. A. UINavigationController 的根视图控制器( its viewControllers array ).

    这个 初始视图控制器 在情节提要中,通常将设置为关键窗口的根视图控制器(#1),尽管这也有例外。

    如果这恰好是一个导航控制器(这是常见的),那么该导航控制器将拥有自己的根视图控制器(#2)。

        3
  •  2
  •   cheznead    10 年前

    初始视图控制器与故事板相关联,故事板在使其成为窗口的根视图控制器方面为您提供帮助。

    在应用程序中可以有更多的根视图控制器,但这些控制器是次要的,并且与窗口的根视图控件分离。