UITabBar est une classe qui permet d'ajouter des contrôles accessibles par un simple bouton. Il est alors possible de créer un barre d'onglets ou une barre de boutons donnant accès à des vues différentes. Chaque vue est une instance de UITabBarItem qu'il est possible d'animer.
On part du principe que la tabBar est une propriété de l'Application Delegate. On le déclare ainsi qu'un tableau mutable qui permettra le stockage des vues de la tabBar.
@interface MyApplicationAppDelegate : NSObject { UITabBarController *tabBarController; NSMutableArray *viewControllersList; }
Le code minimal contient
self.tabBarController = [[UITabBarController alloc] init]; self.viewControllersList = [NSMutableArray arrayWithCapacity:5]; // ici viendra le code de création des vues internes au tabBarController self.tabBarController.viewControllers = [self.viewControllersList copy]; self.tabBarController.selectedIndex = 0; [window addSubview:self.tabBarController.view];
On peut instancier et ajouter chaque vue au moyen d'une méthode spécifique
- (void)initMyView { UITableView *myTableView = [[UITableView alloc] init]; UINavigationController *myTableViewNavigationController = [[UINavigationController alloc] initWithRootViewController:myTableView]; UITabBarItem *myTabBarItem = [[UITabBarItem alloc] initWithTitle:@"Belle vue" image:[UIImage imageNamed:@"belleVue.png"] tag:1]; myTableView.tabBarItem = myTabBarItem; [self.viewControllersList addObject:myTableViewNavigationController]; // On n'oublie pas de libérer la mémoire [myTableViewNavigationController release]; [myTableView release]; [myTabBarItem release]; }
Il suffit alors d'appeler la méthode pour remplir le tabBarController
self.tabBarController = [[UITabBarController alloc] init]; self.viewControllersList = [NSMutableArray arrayWithCapacity:5]; [self initMyView]; self.tabBarController.viewControllers = [self.viewControllersList copy]; self.tabBarController.selectedIndex = 0; [window addSubview:self.tabBarController.view];