9
votes

Meilleure pratique sur montrant un écran de connexion à une fois avec des storyboards

J'ai vu des questions similaires ici, mais pas avec une réponse claire. J'ai donc une vue de connexion modale avec le formulaire de nom d'utilisateur / mot de passe classique, un bouton de connexion Facebook et un bouton d'inscription que je voudrais afficher lorsque l'utilisateur démarre l'application pour la toute première fois. D'après ce que j'ai trouvé, il y a deux façons de la mettre en œuvre, avec de courts morceaux.

  1. Dans l'Appdelerate's Didfinishlaunchingwithoptions Un conditionné est défini pour vérifier si l'utilisateur est connecté. Si non, la racine racine est définie sur le loginViewController. Après une connexion réussie, une SEGUE a lieu à la vue principale de l'application. Mon problème avec cette approche est que je ne suis pas sûr comment réinitialiser la vérification rootviewController à la vue principale. Est-ce possible et comment?

    Y a-t-il d'autres moyens d'afficher le login modal sans régler la racine racine? Ce qui signifie que je tiendrais à la vue principale.

    1. dans le contrôleur d'affichage principal dans la vue ViewDididAppear a vérifications conditionnelles si l'utilisateur est connecté. Si non une SEGUE au loginvc est effectuée. Lorsque l'utilisateur se connecte succinctement, il est renvoyé à la vue principale qui a rejeté la vue de connexion modale. Le problème avec cette approche est que la vue principale est brièvement montrée, que je préférerais ne pas faire.

    2. Toute autre idée? S'il vous plaît laissez-moi savoir quelle est la meilleure pratique en ce qui concerne ce scénario. Merci d'avance,


1 commentaires

Il y a quelques bonnes réponses ici: Stackoverflow.com/Questtions/19962276/...


3 Réponses :


1
votes

Vous pouvez définir la racine racine via l'Appdelegate en configurant simplement un contrôleur de navigation et, lorsque vous effectuez la vérification, définissez la vue Root des contrôleurs de navigation sur la vue que vous souhaitez afficher à ce moment-là. Je pense que quelque chose comme ça devrait fonctionner si vous ajoutez une déclaration IF pour ce que vous voulez faire:

// Override point for customization after application launch.
    RootViewController *rootController = [[RootViewController alloc] initWithNibName:nil bundle:nil];

    UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:rootController];

    self.window.rootViewController = navigationController;


4 commentaires

Oui, je suis au courant de la définition de la racine racine de l'Appdelegate. Mon problème consiste à la réinitialisation de la racine racine de racine une fois que la connexion a lieu sur le contrôleur d'affichage principal de l'application. Je ne sais pas comment cela est fait et s'il est conseillé de faire cette approche.


Pourquoi est-il nécessaire que ce soit la racine racine après la connexion?


Principalement pour ne pas avoir la vue de connexion toujours dans la pile de visée. Pour être capable de faire des choses comme Pop désactiver tous les contrôleurs d'affichage jusqu'à la racine si cette option est nécessaire plus tard dans le développement.


Je suis curieux de savoir comment vous allez faire cela sur un iPad à l'aide d'une commande UisplitViewController comme racine?



3
votes

Après avoir essayé de nombreuses méthodes différentes, j'ai pu résoudre ce problème avec ceci: xxx


0 commentaires

3
votes

À mon avis, la meilleure stratégie pour quelque chose comme ceci est un écran de connexion déjà présenté sur le contrôleur d'affichage principal lorsque l'application se lance et est rejetée bien et traitée après la signature de l'utilisateur. J'ai trouvé que la plupart des Solutions précédemment suggérées (ainsi que les suggestions ici: Meilleures pratiques pour l'écran de connexion de storyboard, le nettoyage de données sur la déconnexion ) Ne pas l'accomplir avec élégance.

Après quelques expériences hier, je pense que la meilleure façon de faire cela consiste à utiliser les contrôleurs de la vue enfant:

1. Choisissez votre story-boot de l'interface principale dans Xcode tout comme vous le feriez normalement (il n'est pas nécessaire d'ajouter quelque chose à votre AppDelegate

 Interface principale

2. Ajoutez les éléments suivants à votre contrôleur d'affichage principal dans ViewDiDload : < / strong> xxx

3. Une fois l'utilisateur enregistré, informez votre contrôleur d'affichage principal en utilisant des notifications ou un délégué. Ensuite, vous pouvez animer l'écran de connexion loin de vous le souhaiter Contrôleur de vue racine, l'écran de connexion est distribué après que l'utilisateur se connecte et il n'y a pas de scintillement lors de la présentation d'une première présentation de l'écran de connexion.


0 commentaires