Bonjour,
Ma question concerne une customization de UINavigationBar que je souhaite garder sur chaque vue pushée. Je m'explique :
J'ai un MainViewController dans lequel est "embeded" un NavigationController. J'ai customizé la NavigationBar comme ci dessous (TopBarViewController est chargé de géré le clic sur les boutons custom de la NavigationBar):
Ca marche super ! Sauf que lorsque je change de vue en y pushant une nouvelle dans la pile, la customization disparait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 -(void) buildToolBar { // Add the TopBarView Controller self.topBarController = [[TopBarViewController alloc] init]; UIBarButtonItem *buttonItems =[[UIBarButtonItem alloc] initWithCustomView:self.topBarController.view]; self.navigationItem.rightBarButtonItem = buttonItems; buttonItems = nil; }
J'aurais souhaité que cette customization soit visible sur l'ensemble des vues pushées / poppées. J'imagine que c'est un besoin souvent requis dans les applis. Quel pattern devrais-je employer ? Une solution serait de recopier la customization dans toutes les vues pushées, mais ce ne serait absolument pas DRY.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 // Pushing a new view DetailView_familyViewController *detailView = [[DetailView_familyViewController alloc] initWithNibName:@"DetailView_family" bundle:nil]; [self.navigationController pushViewController:detailView animated:YES]; detailView = nil;
Merci d'avance et bonne journée.
EDIT :
Une solution que j'ai trouvée et qui marche est de créer un UIViewController parent qui implémente la customization de la NavigationBar. Tout contrôler enfant de ce parent aura la même customization. Est-ce une bonne solution selon vous ? Sachant que dans la documentation officielle de UINavigationItem, on peut lire :
Avoid tying the creation of bar button items in your navigation item to the creation of your view controller’s view
Partager