2011-08-02 4 views
0

Dans mon application, j'ai un identifiant et si la connexion est réussie, l'utilisateur obtient un identifiant de session. Lorsque la session de l'utilisateur expire et demande une page avec la session expirée, le serveur signale que la session a expiré et que l'utilisateur doit se reconnecter et que mon application appelle le popToRootViewControllerAnimated (page de connexion). J'utilise la classe NSURLConnection pour planifier les rappels sur mon UIViewController lorsque le téléchargement est terminé. Le problème que je rencontre est que je planifie le NSURLConnection pendant mon viewDidLoad et les rapports de connexion avant que le contrôleur de vue apparaisse. Je voudrais mettre le NSURLConnection dans le viewDidAppear mais je ne veux pas contacter le serveur chaque fois que la vue apparaît. Est-ce que quelqu'un sait quelle est la meilleure façon de résoudre ce problème?iPhone Popping View Controller avant ViewDidAppear

Répondre

2

Tout d'abord, déclarer une variable enum:

typedef enum { 
    StatusLoggedOut, 
    StatusAttemptingLogin, 
    StatusLoggedIn 
} LoginStatus; 

Puis ajouter une variable membre à votre contrôleur de vue pour stocker l'état de connexion. Puis, à l'intérieur viewDidAppear: vous pouvez le faire:

- (void)viewDidAppear:(BOOL)animated 
{ 
    if (loginStatus == StatusLoggedOut) { 
     loginStatus = StatusAttemptingLogin; 
     // start the NSURLConnection 
    } 
} 

Lorsque la connexion est terminée, vous pouvez changer l'état de StatusLoggedIn ou StatusLoggedOut (selon la façon dont il est avéré).

Vous pourriez vous en sortir avec un simple BOOL mais l'expérience m'a appris qu'il vaut mieux représenter tous les états intermédiaires.

En outre, vous n'avez pas posé de questions à ce sujet, mais je pense que ce serait une meilleure expérience utilisateur si vous présentiez l'écran de connexion comme une vue modale; En utilisant popToRootViewController, l'utilisateur perdra sa place dans votre application, ce qui est ennuyeux. (Sauf si vous le sauvegardez et le restaurez, auquel cas vous faites beaucoup de travail pour vous-même.)

+1

+1 très bonne suggestion sur le contrôleur de vue modale pour se connecter. – InsertWittyName