Question

J'espère que quelqu'un pourra me diriger dans la bonne direction.

J'ai 2 contrôleurs, MasterViewController (qui affiche beaucoup de données) et LoginViewController (connecte les utilisateurs et obtient ces données).

Le MasterViewController est le contrôleur racine.J'ai ce code juste en haut pour vérifier si l'utilisateur est connecté.S'ils sont connectés, la méthode loadView est appelée, sinon ils sont redirigés vers le contrôleur de vue de connexion.

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSDictionary *session = [Global getSession];
    if(!session){

        // Not logged in.
        LoginViewController *loginViewController = [LoginViewController alloc];
        [self.navigationController presentViewController:loginViewController animated:YES completion:nil];

    }else{
        [self loadView];
    }
}

Une fois connectés, j'ai ce code qui les ramène au MasterViewController avec ce code :

[self dismissViewControllerAnimated:NO completion:nil];

Le problème est que MasterViewController n’est pas chargé du tout.Comment puis-je relire l'intégralité de cette vue avant que l'utilisateur ne soit redirigé vers la vue ?

Merci, Peter

Était-ce utile?

La solution

Il existe différentes manières.

  1. Utilisez un délégué et déclarez une méthode de rechargement dans le contrôleur de vue principal, par exemple « reloadData ».Avant de présenter le contrôleur de vue de connexion, définissez le contrôleur de vue principal en tant que délégué pour loginSuccessEvent.Une fois la connexion réussie, avant de la rejeter, appelez la méthode déléguée.

  2. Définir une propriété booléenne, isReloadNeeded dans le délégué de l'application.Dans le contrôleur de vue principal, viewWillAppear ou viewWillAppear vérifiez ce booléen pour recharger les données.définissez le booléen sur oui à partir du contrôleur de vue de connexion et réinitialisez-le après le rechargement dans le contrôleur de vue principal.

À faire, option 1 :

Définir un protocole d'interaction

@protocol LoginDelegate

   -(void) loginSuccessPostProcess;

@end

Dans Connexion View Controller.

.h Fichier --> Déclarer une propriété

@property (weak) id< LoginDelegate> loginDelegate;

.m --> Après la connexion réussie avant de quitter, appelez la méthode déléguée

//Login Success
[self. loginDelegate loginSuccessPostProcess];
[self dismissViewControllerAnimated:YES completion:nil];

Vue principale Contrôleur --> Implémenter la méthode.

.h --> Adopter le protocole

  @interface mainViewCOntroller < LoginDelegate>

.m

  1. Définir le contrôleur de vue principale en tant que délégué à la propriété du délégué dans Login View Contoller après l'instanciation et avant de le présenter

    loginViewController *login = [[LoginViewController alloc] init];// Définissez votre délégué après l'instanciation et avant de présenter Login.Logindelegate = self;[auto-présentViewController: connexion] ;

Implémenter la méthode de rechargement

 -(void) loginSuccessPostProcess
 {
        //Your Method.
  }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top