2016-05-23 2 views
1

J'ai un problème, j'ai 2 contrôleurs de vue sur les contrôleurs de la barre d'onglets. Ces deux contrôleurs affichent des onglets. Mais quand j'ai fait un push segue de View contrôleur 1 à View contrôleur 3. View contrôleur 3 n'affiche pas la barre d'onglets.Afficher la barre d'onglets sur tous les contrôleurs de vue de l'application

Je veux afficher l'onglet sur tous les contrôleurs de mon application. my situation

+0

Trouver la réponse ici: http://stackoverflow.com/a/15634597/2439156 –

+1

Il suffit de déplacer la position sur le contrôleur de navigation avant le contrôleur 1. il fonctionnera comme vous le souhaitez. – Pawan

Répondre

5

Modifier votre Storyboard:

  • set TabBar View Controller comme initial ViewController

  • définir votre UINavigationViewController en tant que contrôleur de vue racine pour chaque onglet

  • Après tout, la structure de votre conception sera ressembler à une mention Image

enter image description here

1

Vous devriez réaliser votre structure de vues.

Maintenant, vous avez un contrôleur de navigation en premier, et son rootViewController est un contrôleur de barre d'onglet.

NavigationController[0] = TabBarController 

et votre TabBarController a 2 ViewController (contrôleur 1 et contrôleur 2)

NavigationController[0] = TabBarController 

il comprend 2 contrôleurs comme

TabBarController[0] = Controller 1 

TabBarController[1] = Controller 2 

lorsque vous appelez

self.navigationController.pushViewController 

cela signifie que NavigationController poussez sur Controller 3, pour que le contrôleur 3 n'affiche pas la barre d'onglets car il n'est pas dans TabBarController.

si vous voulez pousser au contrôleur 3 et a encore la barre d'onglets, vous pouvez insérer un conteneur dans le contrôleur 1 (ou insérez une vue), et créer un NavigationController comme celui-ci

let nav = NavigationController(rootViewController: yourController1) 
self.yourViewInsertedInController1.addSubview(nav.view) 

puis à yourController1 exécuter

self.navigationController.pushViewController 

ce sera juste.

1

Votre problème existe parce que votre UITabViewController est intégrée dans la pile de navigation que vous initialisez en tant que contrôleur initial.

Vous devez reconstruire les éléments pour que les onglets du contrôleur de la barre d'onglets s'ouvrent sur une nouvelle pile de navigation.

  • Retirez le premier UINavigationController, vous ne avez pas besoin (si vous voulez ne pas utiliser une poussée Segue, utilisez un Segue modal, et vous ne serez pas alors référant à cette viewController de UINavigationController pile de dans votre UITabViewController
  • Intégrer chacun des premier UIViewControllers dans votre UITabViewController dans un UINavigationController.

maintenant vous pouvez pousser Segue séparée dans votre UITabViewController's onglets

-1

Pour ajouter le contrôleur de vue à la matrice de contrôleurs de vue du contrôleur de barre d'onglets, faites glisser le contrôleur de la barre d'onglets sur ce contrôleur de vue, en maintenant la touche Contrôle enfoncée. Sélectionnez Relationship Segue> afficher les contrôleurs dans le menu qui apparaît.