[英]How can I set different UITabBarItems for the same storyboard reference included twice in a UITabBarController?
I have a UITabBarController
containing four view controllers. 我有一个包含四个视图控制器的
UITabBarController
。 The first two of these are storyboard references to the same external storyboard: "BookTable" in the image below. 其中的前两个是对同一外部故事板的故事板引用:下图中的“ BookTable”。
I want to set different tab bar icons for these two items, but I can't work out how. 我想为这两项设置不同的标签栏图标,但我不知道如何做。 If I don't set the tab bar item properties in the embedded storyboard, then there is no tab bar present in the running app, even if I have configured the tab bar in the controller.
如果未在嵌入式情节提要中设置选项卡栏项目属性,则即使我已在控制器中配置了选项卡栏,正在运行的应用程序中也没有选项卡栏。 See the storyboard and the simulator below:
请参见下面的情节提要和模拟器:
If I set the tab bar item properties in the embedded storyboard, then the tab bar item is the same for both: 如果我在嵌入式情节提要板中设置了选项卡栏项目属性,则两个选项卡栏项目都相同:
If I set the tab bar item properties in code, nothing changes: 如果我在代码中设置了标签栏项目属性,则不会发生任何变化:
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
tabBar.items![0].title = "Test Item 1"
tabBar.items![1].title = "Test Item 1"
}
}
I there a way to do this, or will I have to duplicate my storyboard just to set a different tab bar item? 我有办法做到这一点,还是只需要设置一个不同的选项卡栏项目就必须复制情节提要?
Unfortunately, Interface Builder does not offer too many possibilities when it comes to view controller reusing in tab bar controllers. 不幸的是,当要在标签栏控制器中重新使用视图控制器时,Interface Builder并没有提供太多的可能性。 You'll have to specify the view controllers of the
UITabBarController
programmatically: 您必须以编程方式指定
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"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.