【发布时间】:2016-02-19 14:22:40
【问题描述】:
我有一个标签栏,我想根据用户的设置更改其项目。所以我需要能够以编程方式从标签栏中添加/删除项目。这是我的代码:
class TabBarViewController: UITabBarController {
var controllerArray = [UIViewController]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.tabBar.tintColor = UIColor.greenColor()
let storyBoard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
let controller1 = storyBoard.instantiateViewControllerWithIdentifier("Navigation2") as! nav2
let controller2 = storyBoard.instantiateViewControllerWithIdentifier("Explore") as! ExploreNavigation
let controller3 = storyBoard.instantiateViewControllerWithIdentifier("friends") as! ExploreNav
let controller4 = storyBoard.instantiateViewControllerWithIdentifier("controller3ID") as! controller3VC
controllerArray.append(controller1)
controllerArray.append(controller2)
controllerArray.append(controller3)
controllerArray.append(controller4)
self.tabBarController?.setViewControllers(controllerArray, animated: true)
}
}
但如果我注释掉其中一行,例如这样:
//controllerArray.append(controller2)
因此该控制器不属于控制器阵列,控制器仍显示在选项卡栏中。我做错了什么?
我也试过了,还是不行:
self.tabBarController?.viewControllers = controllerArray
【问题讨论】:
-
您要更改选项卡栏中的项目或选项卡栏控制器中的视图控制器,还是两者都更改?你的标题暗示了一个,但你的问题暗示了另一个。
-
对不起,我不太明白标签栏中的视图控制器和标签栏项目之间的区别。标签栏项目是指标签栏内的标志?我要说的是,我希望第 4 个(最后一个选项卡)在第 4 个选项卡内具有不同的徽标/图像和不同的视图控制器。我希望这很清楚。
-
这段代码没有意义。你的
TabBarViewController扩展了UITabBarController,但它似乎也有一个UITabBarController类型的属性。它应该是一个或另一个,而不是两者。
标签: ios swift uitabbarcontroller