gpt4 book ai didi

ios - 如何为 UITabBarController 中包含两次的同一 Storyboard引用设置不同的 UITabBarItems?

转载 作者:行者123 更新时间:2023-11-28 10:44:00 26 4
gpt4 key购买 nike

我有一个包含四个 View Controller 的 UITabBarController。其中前两个是对相同外部 Storyboard的 Storyboard引用:下图中的“BookTable”。

tab bar controller with two child VCs

我想为这两个项目设置不同的标签栏图标,但我不知道该怎么做。如果我没有在嵌入式 Storyboard中设置选项卡栏项目属性,那么即使我已经在 Controller 中配置了选项卡栏,正在运行的应用程序中也不会出现选项卡栏。请参阅下面的 Storyboard和模拟器:

tab bar controller with specified item simulator screenshot with missing items

如果我在嵌入式 Storyboard中设置选项卡栏项目属性,那么两者的选项卡栏项目是相同的:

tab bar controller with duplicate items

如果我在代码中设置选项卡栏项目属性,则没有任何变化:

class TabBarController: UITabBarController {

override func viewDidLoad() {
super.viewDidLoad()

tabBar.items![0].title = "Test Item 1"
tabBar.items![1].title = "Test Item 1"
}

}

我有办法做到这一点,还是我必须复制我的 Storyboard才能设置不同的标签栏项目?

最佳答案

不幸的是,Interface Builder 在标签栏 Controller 中重用 View Controller 时并没有提供太多可能性。您必须以编程方式指定 UITabBarController 的 View Controller :

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"
}
}

关于ios - 如何为 UITabBarController 中包含两次的同一 Storyboard引用设置不同的 UITabBarItems?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49266944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com