Domanda

Spero che qualcuno potesse indicarmi nella giusta direzione.

Ho 2 controller, masterviewcontroller (che visualizza molti dati) e LoginViewController (registra gli utenti e ottiene tali dati).

Il masterviewcontroller è il controller di root.Ho questo codice direttamente all'inizio per verificare se l'utente è connesso. Se vengono registrati il metodo LoadView viene chiamato, altrimenti vengono eseguiti al controller di visualizzazione di accesso.

- (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];
    }
}
.

Una volta che accedono ho questo codice che li riporta al masterviewcontroller con questo codice:

[self dismissViewControllerAnimated:NO completion:nil];
.

Il problema è il masterviewcontroller non è affatto caricato.Come posso rallegrare l'intera vista prima che l'utente sia ripreso alla vista?

Grazie, PETER

È stato utile?

Soluzione

Ci sono diversi modi.

    .
  1. Utilizzare Delegato e dichiarare un metodo per ricaricare il controller di visualizzazione principale dire "ReloadData". Prima di presentare il controller di visualizzazione del login, impostare il controller di visualizzazione master come delegato per il loginsuccessevent. Una volta che il login ha esito positivo prima di licenziarlo, chiama il metodo Delegate.

  2. Imposta una proprietà BOOL, isReloadNeeded in App Delegate. Nel controller di visualizzazione principale, viewWillAppear o viewWillAppear Controllare questo BOOL per ricaricare i dati. Impostare il BOOL su YES dal controller di visualizzazione del login e ripristinare dopo aver ricaricato nel controller di visualizzazione principale.

  3. Per fare opzione1:

    Definisci un protocollo per l'interazione

    @protocol LoginDelegate
    
       -(void) loginSuccessPostProcess;
    
    @end
    
    .

    Nel controller di visualizzazione del login.

    .h File -> Dichiarare una proprietà

    @property (weak) id< LoginDelegate> loginDelegate;
    
    .

    .m -> Dopo il successo del successo prima di licenziare, chiamare il metodo delegato

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

    Controller di visualizzazione principale -> Implementare il metodo.

    .h -> Adotta al protocollo

      @interface mainViewCOntroller < LoginDelegate>
    
    .

    .m

      .
    1. Imposta il controller di visualizzazione principale come delegato nella proprietà Delegate nel login Visualizzato il conller dopo l'istanziazione e prima di presentarlo

      LoginViewController * Login= [[LoginViewController ALLOC] init]; // imposta il tuo delegato dopo l'istanziazione e prima di presentare login.logindelegate= sé; [Self PresentviewController: Login];

    2. Attuare il metodo per ricaricare

       -(void) loginSuccessPostProcess
       {
              //Your Method.
        }
      
      .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top