UIKit 以编程方式:嵌套导航的架构

UIKit Programmatically: Architecture For Nested Navigation

我在一个应用程序中有一堆屏幕:

Login screen (NavigationController - rootViewController)
  |
  Tab bar navigation controller
   |
    -- Dashboard Screen (NavigationController)
        |
         -- Details Screen (Child of dashboard)
   |
    -- Recipes Screen(Navigation Controller)

所以登录屏幕是一个 UINavigationController,登录后我推送一个 viewcontroller,它是一个 UITabBarController,有 2 个屏幕,每个屏幕都是一个 UINavigationController(仪表板屏幕和食谱屏幕)。

我不确定这是导航架构的正确方式,但它解决了在登录屏幕上不显示标签栏的问题,只有在登录后标签栏才会显示。

我在仪表板屏幕上有一个注销按钮,我正在尝试一直返回到登录屏幕,但它不起作用,因为登录屏幕不在导航堆栈中。 我怎样才能一直弹出到登录屏幕?我应该以不同的方式组织我的导航吗?

一个想法是:

  1. 您可以 present 第一个 UINavigationControllerUITabBarController 而不是推送它

  2. 然后从您的仪表板屏幕,您可以dismiss返回登录屏幕

我还概述了一些关于如何管理一些复杂导航流程的更多想法here