我有一个主要的故事板,其中包含一个UITabBarController
,每个UITabBarItem
只会将您带到另一个故事板。我的问题是并非所有选项卡都应该始终显示。有2到5个选项卡,并且选项卡的组合可以根据用户完全不同。
如何有条件地隐藏标签? 这似乎应该是非常直接的,但我还没有找到解决这个问题的一般方法。
答案 0 :(得分:1)
我最终做了类似以下的事情:
let user = User.sharedInstance
if let vcs = self.viewControllers {
var newVcs : [UIViewController] = []
for vc in vcs {
if let title = vc.title {
switch title {
case "Feature1":
if user.isFeature1Enabled() {
newVcs.append(vc)
}
case "Feature2":
if user.isFeature2Enabled() {
newVcs.append(vc)
}
default:
()
}
}
}
self.setViewControllers(newVcs, animated: false)
我觉得应该有更好的方法。我期待做something.hide()
这样的事情,但这很有效。
答案 1 :(得分:0)
1.实例化视图控制器窗体stroryboard。
let sb = UIStoryboard(name: "you storyboard name", bundle: nil)
let vc = sb.instantiateViewController(withIdentifier: "storyboard id set")
2.创建标签栏控制器并添加子视图控制器。
let tabBarController = UITabBarController()
let nav = UINavigationController(rootViewController: vc) // if you didn't ember in navigation controller
tabBarController.addChildViewController(nav)
3.自定义tabbar项目。
nav.tabBarItem.image = ... // your normal image
nav.tabBarItem.selectedImage = ... // your select image
nav.tabBarItem.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.blue], for: .normal)
nav.tabBarItem.setTitleTextAttributes([NSAttributedStringKey.foregroundColor: UIColor.blue], for: .selected)