以编程方式更改tabBar项目?

当用户login时,我想更改一个TabBar Item

例如:我有5个不同的tabBar项目,都创build了一个Storyboard。

现在我想更改索引2(或标签== 2),当我用户没有帐户的tarBar。 我想加载一个不同的rootViewController。 rootViewController不是我的TabBar项目,我会加载一个完全不同的控制器。

做这个的最好方式是什么? 我可以简单地改变图标:

 self.tabBar.items![0].selectedImage = UIImage(named: "icon_cal_grey") 

但是,如何更改rootViewController?

我应该在这里做吗?

 override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) { if item.tag == 1 { // ? } } 

或者应该生病创build一个UINavigationController作为RootViewController,并加载在这里“正确的”ViewController作为RootViewController?

检查用户是否login,然后更改UITabBarController的视图控制器:

 tabbarController.viewControllers?.replaceRange() 

这也可能有助于在Swift中设置UITabBarController的视图控制器

您需要用新的视图控制器replace第二个选项卡相关的视图控制器。 这里是示例代码,它可以帮助你:

 NSMutableArray *viewControllers = [[NSMutableArray alloc] initWithArray:self.tabBarController.viewControllers]; UIViewController *newVC = [UIViewController new]; UINavigationController *newNav = [[UINavigationController alloc] initWithRootViewController:newVC]; [viewControllers replaceObjectAtIndex:1 withObject:newNav]; self.tabBarController.viewControllers = viewControllers 

尝试这个:

 self.tabBar.selectedIndex = 0 

如果你想改变viewController