我有一个包含四个视图控制器的UITabBarController
。前两个是对相同外部故事板的故事板引用:" BookTable"在下图中。
我想为这两个项目设置不同的标签栏图标,但我无法弄清楚如何。如果我没有在嵌入式故事板中设置标签栏项属性,那么正在运行的应用程序中会出现 no 标签栏,即使我已在控制器中配置了标签栏。请参阅下面的故事板和模拟器:
如果我在嵌入式故事板中设置标签栏项目属性,则两者的标签栏项目相同:
如果我在代码中设置标签栏项属性,则不会发生任何变化:
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
tabBar.items![0].title = "Test Item 1"
tabBar.items![1].title = "Test Item 1"
}
}
我有办法做到这一点,还是我必须复制我的故事板才能设置不同的标签栏项目?
答案 0 :(得分:3)
不幸的是,在查看控制器重新使用标签栏控制器时,Interface Builder没有提供太多可能性。您必须以编程方式指定UITabBarController
的视图控制器:
class TabBarController: UITabBarController {
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
setUp()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setUp()
}
func setUp() {
let storyboard = UIStoryboard(name: [storyboard id], bundle: nil)
let firstBookTableVc = storyboard.instantiateViewController(withIdentifier: "BookTable")
let secondBookTableVc = storyboard.instantiateViewController(withIdentifier: "BookTable")
//configure the view controllers here...
viewControllers = [firstBookTableVc, secondBookTableVc]
tabBar.items?[0].image = [first tab bar image]
tabBar.items?[1].image = [second tab bar image]
tabBar.items?[0].title = "first title"
tabBar.items?[1].title = "second title"
}
}