2017-06-15 1 views
0

Lorsque mon application iOS se charge, un contrôleur d'onglets est chargé avec 3 onglets: charge, location, more. Lorsque vous cliquez sur plus, vous avez la possibilité de vous connecter. Lorsque les clics sur la connexion ->signviewcontroller sont affichés lorsque l'utilisateur choisit son profil Google pour se connecter -> une fois qu'il a réussi, il doit être redirigé vers la page Frais. Si l'utilisateur ne se connecte pas, ce qui serait la première fois que l'application se charge, les onglets normaux devraient être affichés -> frais, emplacement, plus. Le problème est que je ne suis pas sûr si j'ai aligné correctement mes TabViewController et NavigationController. Une fois que vous avez cliqué sur la connexion, Signviewcontroller s'affiche et je sais également ChargeViewController mais je ne vois pas les onglets et le nom de l'élément de la barre de navigation, bien qu'il y ait une barre de navigation vide.Lorsque le tabviewcontroller et le contrôleur de navigation segue n'affichent pas les onglets du bas

Voici mon code Segue:

self.performSegue(withIdentifier: "signin_complete", sender: self) 

Voici ma mise en page de story-board, essayé d'extraire le problème et a montré ci-dessous: enter image description here

Dois-je différemment la mise en page mes contrôleurs de vue? J'ai lu que j'ai besoin d'ajouter le controleur de navigation qui permettrait de corriger les onglets du bas mais ce n'est pas le cas.

GIF de ce à quoi il ressemble et remarquez que la charge de la dernière page ne montre aucun onglet en bas. gif link

+0

Est-ce quelque chose que vous vouliez? https://stackoverflow.com/questions/29458948/how-to-use-navigation-controller-inside-of-uitabbarcontroller-with-storyboard-on – Ruchi

+0

vous devez définir comme rootViewController au lieu de pousser. ** laissez appDelegate = UIApplication.shared.delegate comme! AppDelegate appDelegate.self.window? .rootViewController = tabBarController ** – KKRocks

Répondre

0

Vous devez supprimer segue entre Signviewcontroller et Navigation Controller - ChargeViewController. Ensuite, Tabbar apparaîtra sur ce contrôleur de navigation comme Location.

Voici mon exemple:

With Segue Without TabBar

Without Segue With TabBar

Ensuite, vous devez créer votre propre classe UITabBarController. Après cela, vous pouvez contrôler vos contrôleurs de vue à l'intérieur de tabBar didSelect. Vérifiez l'état de la signature et la racine de SignViewController ou ChargeViewController.

override func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) { 
    let nav: UINavigationController = self.tabBarController?.viewControllers?.first as! UINavigationController 
    //get sign or charge view controller 
    nav.setViewControllers([sign or charge], animated: true) 
}