如何正确更改视图控制器层次结构?

How to properly change view controllers hierarchy?

假设这是我的视图层次结构,

视图控制器:L (login:success) -> A |乙 |丙 | D | E -> (logout) L

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

来自VC

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

现在,

我的问题?

我想做什么?

更新:找到这个!

登录前:

登录后:

注销后:

求推荐。

与其对导航堆栈重新排序,为什么不使用 presentViewController 从每个导航控制器模态显示注销视图。

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

我只遵循了我想到的方式。

在为 UITabbarController viewControllers 属性 设置 nil 后,我将根视图控制器更改为 L。这将调用 类 中的 dealloc 个。此外,我在每个选项卡中循环运行以将其弹出到其根目录。