Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatically change tabBar item?

I would like to change a TabBar Item, when a User is logged in or not.

For example: i have 5 different tabBar items, all created an Storyboard.

Now i want to change the tarBar with index 2 (or tag == 2) when i user has no account. I would like to load a different rootViewController. The rootViewController is not already an item of my TabBar, i would load a totally different Controller.

What is the best way to do this? I can simple change the icon with:

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

But how to i change the rootViewController?

Should i do it here?

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem) {

    if item.tag == 1 {
        // ?
    }

}

Or should ill create a UINavigationController as RootViewController, and load here the "correct" ViewController as RootViewController?

like image 571
derdida Avatar asked Mar 30 '16 10:03

derdida


1 Answers

You need to replace second tab associated viewcontroller by a new viewcontroller. here is sample code, which may help you:

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 
like image 82
dev_binod Avatar answered Sep 27 '22 16:09

dev_binod