iOS动态标签与故事板

时间:2018-03-20 00:26:29

标签: ios swift uitabbarcontroller

我有一个主要的故事板,其中包含一个UITabBarController,每个UITabBarItem只会将您带到另一个故事板。我的问题是并非所有选项卡都应该始终显示。有2到5个选项卡,并且选项卡的组合可以根据用户完全不同。

如何有条件地隐藏标签? 这似乎应该是非常直接的,但我还没有找到解决这个问题的一般方法。

2 个答案:

答案 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)