====== Implémentation d'une tabbar ======
===== Principes et utilisations =====
[[https://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBar_Class/Reference/Reference.html|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 [[https://developer.apple.com/library/ios/#documentation/uikit/reference/UITabBarItem_Class/Reference/Reference.html#//apple_ref/occ/cl/UITabBarItem|UITabBarItem]] qu'il est possible d'animer.
===== Étapes de construction =====
==== Déclarations ====
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;
}
==== Implémentation ====
Le code minimal contient
* l'instanciation des classes pour créer les objets nécessaires.
* la copie du tableau de vues dans la tabBar : le tabBarController est muni d'une propriété viewControllers de type NSArray. Pour alimenter cette propriété, il est donc nécessaire de copier notre tableau
* on spécifie l'index du tabBar sélectionné
* on finit par ajouter la tabBar à la window
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];
==== Créer les vues ====
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];
}
==== Ajouter la vue ====
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];