2017-04-16 24 views
1

J'ai un contrôleur de barre à onglets qui a deux éléments connectés à deux contrôleurs de vue (disons A & B) maintenant je veux ajouter un contrôleur de 3ème vue (disons C). Mais je ne veux pas ajouter une troisième icône dans l'onglet. Lorsque l'utilisateur sélectionne la deuxième icône, il doit afficher B ou C selon que l'utilisateur s'est connecté ou non.comment connecter plusieurs vues à un seul élément de barre d'onglets dans swift?

Storyboard Setup

+0

si quelqu'un est en baisse de vote au moins me dire pourquoi êtes-vous vers le bas vote? –

+0

Pouvez-vous ajouter ce que vous avez fait jusqu'à maintenant ici? – Rahul

+0

@IqbalInzamam: Les questions sont généralement rejetées sur Stackoverflow lorsque les gens semblent ne pas avoir essayé de trouver une solution avant de demander de l'aide. Vous devriez essayer de décrire vos pensées pour une approche possible dans votre question et vous demander spécifiquement pourquoi cette approche ne fonctionne pas ou s'il existe de meilleures alternatives. – Mischa

Répondre

4

Il suffit de créer un autre contrôleur de vue de l'élément de barre d'onglets pour lequel vous souhaitez afficher des vues différentes en fonction du contexte. Appelons-le RouterViewController. Passez ensuite les informations dont vous avez besoin pour décider quel contrôleur de vue afficher à RouterViewController et implémenter la logique nécessaire.

Depuis le RouterViewController, vous pouvez maintenant présenter le contrôleur de vue souhaité (sans animation). Il y a beaucoup de façons de le faire, par exemple:

  • Faites votre RouterViewController une sous-classe de UINavigationController et définir dynamiquement sa propriété rootViewController.
  • Rendez votre RouterViewControllercontrôleur de vue de conteneur et intégrez le contrôleur de vue souhaité en conséquence.
  • Présentez un contrôleur de vue modal (sans animation) à partir de votre RouterViewController. (Personnellement, je dissuadent cette option, car la présentation de contrôleurs de vue modal est destiné à un autre usage.)

etc.

+1

Merci. J'essaie la 1ère façon que tu as suggérée. J'ai donc ajouté un contrôleur de navigation comme deuxième élément du contrôleur de tabulation. Ensuite, je ne pouvais pas comprendre où placer le rootViewController du contrôleur de navigation. Est-ce dans viewDidLoad du tabBarController et comment le définir? Aidez-moi, s'il vous plaît. –

+1

Je suppose que vous utilisez un storyboard? Si oui: 1. Ajoutez votre contrôleur de navigation comme deuxième onglet du contrôleur de la barre d'onglets. 2. Créez une sous-classe de 'UINavigationController' et appelez-la' RouterViewController'. 3. Sélectionnez le contrôleur de navigation dans votre storyboard et définissez sa classe sur 'RouterViewController'. 4. Dans la méthode 'viewDidLoad()' de 'RouterViewController', définissez le contrôleur de la vue racine comme suit:' viewControllers = [theViewControllerYouWantToShow] '. – Mischa

+1

cela peut être une question très stupide. Désolé je suis très nouveau à ios. J'ai fait comme tu l'as dit, comment connecter UINavigationController et l'UIController (B & C), par quel type de segue. J'ai fait la jachère si (...) { viewControllers = [FirstViewController()] } else { viewControllers = [SecondViewController()] } mais quand je clique sur la deuxième icône de l'onglet il charge une interface de navigation avec écran noir Je joins le schéma de la carte histoire la question –