TabBar控件NavigationBar

时间:2019-05-11 13:53:21

标签: swift uitabbarcontroller

我在TabBar中添加了2个ViewController,但是现在,TabBar的NavigationBar“接管”每个视图的NavigationBar。 我无法为每个按钮设置标题,也无法添加按钮,什么也没有。 我尝试了一些解决方案来解决我在Internet上发现的问题,但是没有任何效果。 我需要控制每个视图的NavigationBar,因为我需要它们彼此不同,具有不同的标题等。 这是我的TabBar代码:

class TabBar: UITabBarController {
let homeVC = HomeVC()
let followingVC = FollowingVC()

override func viewDidLoad() {
    super.viewDidLoad()
    navigationController?.navigationBar.titleTextAttributes = [.foregroundColor: UIColor.appColors.mainWhite]
    navigationController?.navigationBar.tintColor = UIColor.appColors.mainWhite
    navigationItem.setHidesBackButton(true, animated: false)

    homeVC.tabBarItem = UITabBarItem(tabBarSystemItem: .topRated, tag: 0)
    followingVC.tabBarItem = UITabBarItem(tabBarSystemItem: .contacts, tag: 1)

    let tabBarList = [homeVC, followingVC]
    viewControllers = tabBarList
}
}

我真的需要从其自己的ViewController或TabBar类中配置至少一个NavigationBar的选项。

2 个答案:

答案 0 :(得分:0)

您应该将UINavigationController添加到每个ViewController而不是您的UITabBarController

首先删除TabBar的UINavigationController,要么务实地执行此操作,要么在情节提要中首先删除它。

第二次将UINavigationController添加到您的ViewControllers

class TabBar: UITabBarController {

  let homeVC = HomeVC()
  let followingVC = FollowingVC()

  override func viewDidLoad() {
    super.viewDidLoad()

    homeVC.tabBarItem = UITabBarItem(tabBarSystemItem: .topRated, tag: 0)
    followingVC.tabBarItem = UITabBarItem(tabBarSystemItem: .contacts, tag: 1)

    let homeNavigationController = UINavigationController(rootViewController: homeVC)
    let followingNavigationController = UINavigationController(rootViewController: followingVC)


    let tabBarList = [homeNavigationController, followingNavigationController]
    viewControllers = tabBarList
  }
}

现在,如果您更改诸如title和barButtons之类的任何属性,它将相应地反映出来。

答案 1 :(得分:0)

弄清楚了,解决方法是: NavigationBar不是TabBar导航栏,而是通向TabBar的屏幕(例如,登录屏幕),我通过在转移到TabBar控制器时隐藏登录屏幕的导航栏(现在是每个视图的导航栏)的方式来解决此问题控制器已被“登录”视图控件导航栏显示且未被阻止。