Table des matières

Implémentation d'une tabbar

Principes et utilisations

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.

É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

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];