Question

Je travaille sur une application pour laquelle je voudrais utiliser le même système hybride de navigation et de barres de tabulation que l'application iPod / Musique utilise pour naviguer dans les listes de lecture.

Fondamentalement:

  • Navigation pour approfondir une arborescence de liste particulière.
  • Une barre d'onglets en bas pour basculer entre les listes apparaissant sur la plupart / tous les sous-écrans.
  • Le contenu de la barre d'onglets est constant entre tous les écrans.
  • La réaction de la barre d'onglets lorsque vous appuyez dessus est la même sur tous les écrans: elle permet à l'utilisateur de revenir à la racine et de le placer dans cette liste.

Navigation intégrée dans les onglets, intégrée dans la navigation? Il semble que ni l'un ni l'autre ne fasse tout ce que je veux. D'autre part, si je reste avec une application de navigation de base et ajoute simplement les onglets, ne vais-je pas avoir beaucoup de code supplémentaire?

Quelle est la meilleure approche de base pour cela?

Était-ce utile?

La solution

J'ai construit des applications qui ne font que cela. La meilleure façon de penser à cela est de commencer par la partie la plus étroite, les contrôleurs de vue individuels. Dans l'exemple de l'iPod, cela inclut les contrôleurs pour Artistes, Albums, Listes de lecture, Chansons, etc. Remarque: si vous appuyez sur une liste de lecture, une liste de chansons s'affiche. Ce sont deux contrôleurs de vue distincts.

Chacun des onglets que vous voyez sur l'application iPod contient un contrôleur de navigation. Le contrôleur de navigation encapsule les contrôleurs de vue racine des onglets de l'application. Et puis chacun des contrôleurs de navigation est défini comme ViewControllers du contrôleur d’onglet. Le code ressemblerait à quelque chose comme ça

FirstTabViewController *first = [[FirstTabViewController alloc] init...];
SecondTabViewController *second = ...;

UINavigationController *nav1 = [[UINavigationController alloc] initWithRootViewController:first];
UINavigationController *nav2 = [[UINavigationController alloc] initWithRootViewController:second];

myTabBarController.viewControllers = [NSArray arrayWithObjects:nav1, nav2, nil];
// Then make sure to release things to avoid leaks

Si vous souhaitez gérer la transition entre les listes de lecture et les listes de chansons de la liste de lecture sélectionnée, vous devez le faire dans le contrôleur de liste de lecture ( [self.navigationController pushViewController: theListOfSongsViewController animé: SUREWHYNOT] ).

Autres conseils

Jusqu'à présent, je regarde un UITabBarController avec UINavigationControllers dans chaque volet avec un petit code personnalisé pour afficher le contrôleur de navigation de l'onglet cible à la racine d'un commutateur à onglet.

Apple dispose d'une documentation de qualité sur la combinaison de contrôleurs de vue (contrôleurs de navigation dans des contrôleurs d'onglets)

http://developer.apple.com/iphone /library/featuredarticles/ViewControllerPGforiPhoneOS/CombiningViewControllers/CombiningViewControllers.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top