Je suis en train d'implémenter une INTERFACE structurée comme dans le Tweetie application, qui se comporte de la manière suivante: l'affichage de niveau supérieur contrôleur semble être une manette de navigation, dont la vue racine est un "Comptes" table view. Si vous cliquez sur n'importe quel compte, il passe au deuxième niveau, qui est une barre d'onglets au bas de l'écran. Chaque onglet élément affiche une liste différente et vous permet de descendre plus (le niveau ultérieure ne pas afficher la barre d'onglet).
Donc, il semble que la mise en œuvre de la hiérarchie est:
-
UINavigationController
-
Comptes:
UITableViewController
-
UITabBarController
-
Les Tweets:
UITableViewController
- Vue de détail d'un tweet/user/etc
-
Réponses:
UITableViewController
- ...
-
Les Tweets:
-
Comptes:
Cela semble fonctionner[^1], mais semble être non pris en charge selon la documentation du kit de développement pour l' -pushViewController:animated:
(italiques ajoutés):
viewController: Le point de vue du contrôleur qui est poussé sur la pile. Il ne peut pas être une instance de la tab bar controller.
Je voudrais éviter d'Api privées et autres, mais je ne sais pas pourquoi cette utilisation est expressément interdite, même quand il semble bien fonctionner. Quelqu'un connait la raison?
J'ai pensé à mettre la barre d'onglet contrôleur le contrôleur principal, avec chacun des onglets séparés contenant les contrôleurs de la navigation. Le problème, c'est que chaque valeur liquidative contrôleur a besoin de partager une seule racine-vue-contrôleur (à savoir les "Comptes" de la table dans Tweetie) -- cela ne semble pas fonctionner: en poussant la table contrôleur à une deuxième valeur liquidative contrôleur semble pour le retirer de la première. Sans parler de toute la comptabilité lors de la sélection d'un autre compte serait probablement être une douleur.
Comment dois-je mettre en œuvre ce la bonne Manière?
[^1]: La barre d'onglet contrôleur doit être sous-classé, de sorte que la barre d'onglet contrôleur de navigation de l'élément à ce niveau reste synchronisé avec l'onglet sélectionné, l'élément de navigation, et de la personne de l'onglet tableau de contrôleur de la nécessité de pousser leurs respectifs des vues de détail d' self.tabBarController.navigationController
au lieu de self.navigationController
.