我在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的选项。
答案 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控制器时隐藏登录屏幕的导航栏(现在是每个视图的导航栏)的方式来解决此问题控制器已被“登录”视图控件导航栏显示且未被阻止。