Je crée une application iOS à l'aide d'un Storyboard. Le contrôleur de vue racine est un contrôleur de barre d'onglets. Je crée le processus de connexion / déconnexion, et cela fonctionne généralement bien, mais j'ai quelques problèmes. J'ai besoin de savoir la MEILLEURE façon de mettre tout cela en place.
Je veux accomplir ce qui suit:
- Afficher un écran de connexion lors du premier lancement de l'application. Une fois connecté, accédez au premier onglet du contrôleur de la barre d'onglets.
- Chaque fois qu'ils lancent l'application après cela, vérifiez s'ils sont connectés et passez directement au premier onglet du contrôleur de barre d'onglets racine.
- Lorsqu'ils cliquent manuellement sur un bouton de déconnexion, affichent l'écran de connexion et effacent toutes les données des contrôleurs de vue.
Ce que j'ai fait jusqu'à présent est de définir le contrôleur de vue racine sur le contrôleur de barre d'onglets et de créer un enchaînement personnalisé sur mon contrôleur de vue de connexion. Dans ma classe de contrôleur de barre d'onglets, je vérifie s'ils sont connectés dans la viewDidAppear
méthode et j'effectue la séquence:[self performSegueWithIdentifier:@"pushLogin" sender:self];
J'ai également configuré une notification lorsque l'action de déconnexion doit être effectuée: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(logoutAccount) name:@"logoutAccount" object:nil];
Lors de la déconnexion, j'efface les informations d'identification du trousseau, exécute [self setSelectedIndex:0]
et effectue la séquence pour afficher à nouveau le contrôleur de vue de connexion.
Tout cela fonctionne bien, mais je me demande: cette logique devrait-elle être dans l'AppDelegate? J'ai également deux problèmes:
- La première fois qu'ils lancent l'application , le contrôleur de la barre d'onglets s'affiche brièvement avant la transition. J'ai essayé de déplacer le code vers
viewWillAppear
mais la séquence ne fonctionnera pas si tôt. - Lorsqu'ils se déconnectent, toutes les données se trouvent toujours dans tous les contrôleurs de vue. S'ils se connectent à un nouveau compte, les anciennes données de compte sont toujours affichées jusqu'à ce qu'elles soient actualisées. J'ai besoin d'un moyen d'effacer cela facilement lors de la déconnexion.
Je suis prêt à retravailler cela. J'ai envisagé de faire de l'écran de connexion le contrôleur de vue racine ou de créer un contrôleur de navigation dans l'AppDelegate pour tout gérer ... Je ne suis tout simplement pas sûr de la meilleure méthode à ce stade.