在 UITabbarController 中使用 UINavigationController

Use UINavigationController inside UITabbarController

我正在尝试在 UITabbarController 中使用 UINavigationController。

这是我的控制器结构

-UITabbarController(InitialView)
  -tabItemOne-DashboardController
    -SomeButtons with StoryboardSegue-To-DifferentViewController
  -tabItemTwo-OtherController
  -tabItemThree-OtherController

现在我想在 DashboardViewController 中执行某些 StoryboardSegue 时显示后退按钮。 假设我打开应用程序,可以在 UITabbarController 上看到 4 个 tabbarItems,在第一个 tabbar item 中我有 DashboardViewController,在这个 DashVC 中我有 3 4 个不同的按钮来显示其他 viewcontroller秒。到目前为止一切顺利,一切正常。但是一旦来自 DashVC 的 child viewcontroller 出现在屏幕上,我想像 UINavigationController 那样在顶部显示一个后退按钮。

我试过将 UINavigationController 放在 UITabbarController 之前,但它没有显示。我试过 embed it in DashboardVC 但还是 not showing.

我是否需要为 DashboardVC 的每个 childViewControllers 嵌入单独的 UINavigationController

感谢任何帮助。

所以你需要的是这个

-UITabbarController(InitialView)
  -NavigationController -tabItemOne-DashboardController
    -SomeButtons with StoryboardSegue-To-DifferentViewController
  -tabItemTwo-OtherController
  -tabItemThree-OtherController

在 DashBoardController 中,您需要在

中添加此代码
override func viewWillAppear(_ animated: Bool) {
        self.navigationController?.navigationBar.isHidden = true
    }

    override func viewWillDisappear(_ animated: Bool) {
        self.navigationController?.navigationBar.isHidden = false
    }

此代码用于隐藏仪表板中的导航栏,并在按下另一个视图控制器时恢复导航栏,这样您的后退按钮就不会隐藏。 另外,如果您需要在其他视图控制器中使用相同的功能,您应该嵌入导航控制器中。

不完全是你的情况,但所有导航控制器都是 UITabBarController 的孩子,它是初始 viewController。