J'utilise Storyboard et Xcode 6. J'ai des contrôleurs et des scènes dans mon Storyboard:
UINavigationController
qui a HomeViewController
en tant que racine. HomeViewController
a un bouton qui Show (e.g. Push)
UITabBarController
. UITabBarController
a 4 UIViewControllers
.
Mais mon problème est qu'après avoir montré UITabBarController
, il n'y a pas de barres de navigation dans 4 UIViewControllers
. Mais j'ai supposé que si je Show (e.g. Push)
UITabBarController
alors il devrait avoir un contrôleur de navigation intégré qui est le contrôleur initial dans le storyboard. Ai-je raison? Et si oui, comment puis-je configurer la barre de navigation dans Storyboard, car il y a maintenant un événement de barre par défaut dans la barre d'onglets que je vois dans le storyboard. J'ai sélectionné UIViewController et défini des métriques simulées dans l'inspecteur d'identité sur la barre de navigation translucide pour la propriété Top, mais je suppose qu'il devrait être automatiquement ajouté à ce contrôleur et à la barre d'onglets sans étapes supplémentaires.
Ou dois-je ajouter un nouveau contrôleur de navigation pour chaque élément de la barre d'onglets qui aura son contrôleur de vue racine?
La principale question pourquoi je ne vois pas la barre de navigation dans le storyboard en utilisant show (par exemple, Push). Par exemple, si j'ajoute un contrôleur de navigation puis que je le configure comme contrôleur de barre d'onglets racine, Xcode ajoute automatiquement la barre de navigation supérieure, mais si la file d'attente comporte une étape supplémentaire, comme dans mon cas HomeViewController, la barre de navigation supérieure n'apparaît jamais automatiquement.
Bonjour, vous devez intégrer chaque contrôleur de vue contenu dans la barre d’onglet à un contrôleur de navigation qui lui est propre. Donc, le flux est comme ça (HomeVC est incorporé dans un NavController):
/ --> `NavController` --> `ViewController1`
| --> `NavController` --> `ViewController2`
`HomeViewController`-->`TabBarController`|--> `NavController` --> `ViewController3`
\--> `NavController` --> `ViewController4`
Pour répondre à vos questions:
Chaque onglet d'une interface de contrôleur de barre d'onglets est associé à un contrôleur de vue personnalisé (différent). Lorsque l'utilisateur sélectionne un onglet spécifique, le contrôleur de la barre d'onglets affiche la vue racine du contrôleur de vue correspondant, en remplacement de toutes les vues précédentes.
Le contrôleur de vue racine de l'onglet doit donc être associé à un contrôleur de navigation; un contrôleur de vue de navigation doit être ensuite inséré pour que le contrôleur de vue puisse hériter d'une navigation. Une barre d'onglets permet de basculer entre les vues.
Ce document aidera à décrire plus d'informations à ce sujet. https://developer.Apple.com/documentation/uikit/uitabbarcontroller
Dans Swift 2, Xcode 7 dispose d’une fonctionnalité très pratique pour l’ajout d’un contrôleur UINavigationController:
Si vous voulez quelque chose comme ça:
TabBarController -> Navigation Controller -> View Controller with a Table View -> and from the TableView a MasterDetailView
Par exemple:
J'ai eu le problème qu'il n'y avait pas de navigation dans le MasterDetailView (pas de bouton Précédent pour le ViewController avec le TableView).
La solution est:
Définissez Segue entre TableView et MasterDetailView sur: Kind: Push (Deprecated)
Lancez votre application ... espérons que vous verrez le bouton Précédent ... changez le Kind en Show (e.g. Push)
, exécutez à nouveau -> cela devrait fonctionner.