【问题标题】:NavigationBar overrides other view controllers in tabBarControllerNavigationBar 覆盖 tabBarController 中的其他视图控制器
【发布时间】:2019-12-13 08:11:09
【问题描述】:

我有一个带有 4 个视图控制器的快速标签栏控制器。我正在使用 self.tabBarController?.navigationItem.title = "title" 设置导航栏标题 在 4 个视图控制器中的每一个上。当我运行应用程序时,当我依次单击 4 个选项卡中的每一个时,会出现正确的标题:“A”、“B”、“C”、“D”,但是当我在单击选项卡后单击其他选项卡时D,标题只出现在“D”处。我觉得标签 D 的标题出于某种原因覆盖了其他标题。

我尝试了不同的方式设置标题,但仍然遇到同样的问题。

【问题讨论】:

  • 让我猜猜,您在视图控制器的 viewDidLoad() 中设置标题,并且只有您的标签栏控制器嵌入在导航控制器中,对吧?
  • 感谢您的快速回复。我在 viewDidLoad() 中设置标题,并且视图控制器嵌入在标签栏控制器中。

标签: swift uinavigationcontroller uitabbarcontroller navigationbar tabbar


【解决方案1】:

您有一个 UINavigationController,以及您的 UIViewControllers(嵌入在 UITabBarController 中)viewDidLoad() 一旦您单击控制器相应的选项卡,就会调用一次。您可以将每个 UIViewController 嵌入到其自己的导航控制器中,并在 viewDidLoad() 中设置其标题,例如 navigationItem.title = "title" 而不是更改您的 UITabBarController 之一,或将其更改为 UITabBarDelegate 之一或 UITabBarControllerDelegate 对应的 didSelect 函数。

【讨论】:

  • 您可以使用 tabBarController?.tabBar.isHidden 属性控制它。
  • 好吧,通常我在 viewWillAppear 中设置 tabBarController?.tabBar.isHidden = true 和 tabBarController?.tabBar.isHidden = false 在 vi​​ewWillDisappear 中的 viewWillDisappear 在从标签栏视图控制器之一呈现的视图控制器中隐藏选项卡并在返回时恢复它的状态。
  • 你的第二个标签栏是从哪里来的?你能附上一些你的故事板的图片吗?
  • 好的,那么如何呈现另一个视图控制器并返回?
  • 你能分享你的代码来展示控制器和控制器的代码吗?
猜你喜欢
  • 1970-01-01
  • 2017-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多