2016-12-02 1 views
0

Je sais qu'il y a beaucoup de messages à ce sujet, mais mon problème est un peu différent. J'ai un contrôleur de barre d'onglets avec plusieurs vues et l'une des vues est la vue de connexion, si l'utilisateur se connecte il devrait changer la vue pour présenter le menu d'utilisateur.Modification de vues par programme

En même temps, je dois garder le menu barre d'onglets visibles, donc je ne peux pas utiliser modal car il va perdre la référence au contrôleur la barre d'onglets.

donc j'ai fini à l'aide d'un contrôleur de navigation où je viens pousser la vue du menu utilisateur dans la pile (pas la meilleure façon, mais ça marche).

Le problème est, si l'utilisateur double-cliquez sur le login Bar il chargera le login View, et je ne veux pas que cela se produise.

enter image description here

Sur cet exemple, si l'utilisateur clique sur le bouton de connexion, il ira à la vue Bleu, mais si l'utilisateur double-cliquez sur le bouton de fonction sur la barre d'onglets Menu, il ira au rouge vue.

Depuis ma solution ne fonctionne pas comment puis-je obtenir ce que je veux? Si l'utilisateur appuie sur le bouton Connexion, il affichera UNIQUEMENT la vue bleue jusqu'à ce qu'il appuie sur le bouton Déconnexion.

[Modifier]

Voici le code pour afficher la vue bleu:

let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil) 

let ViewController = storyBoard.instantiateViewController(withIdentifier: "userViewID") as! UserViewController 
        self.navigationController?.pushViewController(ViewController, animated: true) 

Répondre

1

Ok j'ai fini par vérifier si le contrôleur de navigation avait plus d'un enfant (pour le rouge) et la suppression le premier enfant du tableau de navigation afin qu'il puisse le libérer et montrer seulement celui que je voulais.

override func viewWillAppear(_ animated: Bool) { 

     if((self.navigationController?.viewControllers.count)! > 1) 
     { 
      self.navigationController?.viewControllers.removeFirst() 
     } 
    } 

La raison pour laquelle je fini par faire c'était parce que cliquer 2x sur l'élément barre d'onglets, il me apporterait à la vue rouge, même si je l'avais déjà poussé le point de vue bleu au tableau de navigation.