【问题标题】:Use UINavigationController inside UITabbarController在 UITabbarController 中使用 UINavigationController
【发布时间】:2020-04-03 12:57:52
【问题描述】:

我正在尝试在 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 个不同的按钮来显示其他视图控制器。到目前为止一切顺利,一切正常。但是一旦 DashVC 的子视图控制器出现在屏幕上,我想在顶部显示一个后退按钮,就像 UINavigationController 那样。

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

我需要在childViewControllersDashboardVC 中分别嵌入UINavigationController 吗?

感谢任何帮助。

【问题讨论】:

  • 我想,你的 segues 有错误的类型(push、modal 等)
  • 我正在使用从仪表板按钮到 childviewcontrollers 的 Show(例如 Push)
  • 你显示的是来自其他 NavigationController 的相同 ViewController 吗?
  • No.. childviewControllers 直接连接到仪表板.. 在其他任何地方都没有连接或连接到 childviewcontrollers
  • 能否提供您的故事板截图?

标签: ios xcode uinavigationcontroller uitabbarcontroller swift4.2


【解决方案1】:

那么你需要的是这个

-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
    }

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

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

【讨论】:

  • 是的,正如您在屏幕截图中看到的那样,这是我正在做的事情.. 但是导航控制器没有显示在 childViewControllers 中...... :(((( 但让我仔细检查并查看它工作。
  • 我没有看到 TabBarController 的子节点,导航控制器应该是您的 UITabBarController 的 childviewcontroller,我将发布一张我应该如何的图片
  • 左边的第一个视图控制器是标签栏控制器。我在customclass中以编程方式设置它。然后通过代码添加所有的控制器。
  • 既然你有所有的 viewControllers,为什么不在 storyBoard 中做呢,
  • 想要对 UITabbarController 进行一些自定义,所以必须在代码中进行。请再次检查问题。我已经添加了 segue 在 childviewcontroller 的情节提要中的显示方式
猜你喜欢
  • 1970-01-01
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多