ios - 如何正确更改 View Controller 层次结构?

标签 ios uinavigationcontroller uitabbarcontroller

假设这是我的 View 层次结构,

View Controller :L (login:success) -> A |乙| C | D | E -> (注销) L

是的,这是一个支持 UITabbarController 的应用程序,用户可以从任何选项卡注销,我需要将他带到 L。每个选项卡都有单独的 UINavigationController .

来自风险投资

  • 用户可以转到 A1 > A2 > A3
  • B 用户可以转到 B1 > B2 > B3
  • C 用户可以转到 C1 > C2 > C3
  • D 用户可以转到 D1 > D2 > D3 > D4
  • E用户可以去E1 > E2

假设我的应用程序的用户位于特定选项卡的以下位置,

  • 选项卡 1:A3
  • 选项卡 2:B3
  • 标签 3:C3
  • 选项卡 4:D3
  • 标签 5:E2

现在,

我的问题?

  • 如果用户想要从 E2 注销 – 我如何通过从每个选项卡中删除所有推送的 View Controller 来将他带到 L?

  • 需要吗?如果是,那么我该如何为不同的导航 Controller 做到这一点。

  • 有什么好的方法吗?

我想做什么?

  • 我只需将 Root View Controller 更改为 L,但我认为这不是完成此操作的好方法。

更新:找到这个!

登录前:

enter image description here

登录后:

enter image description here

注销后:

enter image description here

请提出建议。

最佳答案

为什么不使用 presentViewController 从每个导航 Controller 模态显示注销 View ,而不是重新排序导航堆栈。

如果用户想要注销 E2,请以模态方式显示注销 View ,分配一个委托(delegate)回调,以便您知道一旦他们注销并且 View 即将关闭。在此之前弹出回根(E1)。

关于ios - 如何正确更改 View Controller 层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31702131/

相关文章:

ios - 在TableView中实现多个PickerView

ios - 使用 Storyboard在导航 Controller 中设置 UITableView

ios - 带有 NavigationBarHidden 的导航 Controller

ios - 将 UIButton 作为 subview 添加到 UITabBar

ios - Swift 标签栏 View prepareforsegue

ios - GitHub API 未解析

iphone - 获取从后台恢复应用程序的推送通知

iphone - 根据容器以编程方式调整 UIViewController 的大小

ios - UITabBarControllerDelegate 中的变量不更新

ios - 设备重启后调试应用程序