UITabBar does not load all view controllers at once - it loads the first. When you click the button on the tab bar, you load another controller.
To get the changes in the tab bar, you can add a delegate and implement:
-(void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item {...}
source share