如何同时实现 UIViewController 堆栈行为

How to implement both UIViewController stack behaviour

我注意到 WhatsApp 在他们的 iOS 应用程序上有一个比较简洁的导航行为。请参阅以下内容:

这里有两个导航堆栈行为:

  1. UINavigationController 作为 UITabBarController
  2. 的 child
  3. UITabBarController 作为 UINavigationController
  4. 的 child

如何同时实现这两个功能,就像 WhatsApp 一样?它是否使用自定义 UINavigationController?

目前我的实现只执行第 2 个而不是第 1 个。我知道要执行第 1 个,我必须将 UINavigationController 作为 UITabBarController 的 child,但是我会失去2号。

但是,如果我同时实现这两个,我会得到奇怪的结果,我会得到两个导航栏,例如:

在您给出的示例中,看起来他们有一个 UITabBarController 作为根视图控制器。设置是导航控制器内的视图控制器。

当您点击 数据和存储 时,它会将另一个视图控制器推送到设置导航控制器的堆栈。

当您按下 Help 时,它会执行相同的操作 - 但当 Help 视图控制器被压入堆栈时,标签栏会隐藏。

有关执行此操作的一些方法,请参阅