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