Domanda

Provo a spiegare il mio problema.In AppDelegate devo selezionare un rootviewcontroller a seconda del risultato di una richiesta asincrona (sto usando il framework afnetworking).In effetti, ho bisogno di sapere se il mio utente è profilato o no: se è profilato, posso mostrargli la casa dell'app, se non è devo mostrargli una vista di profilazione.

Nello Storyboard ho impostato la vista in casa come punto di ingresso designato, ma in questo modo questa vista viene sempre mostrata fino al completamento della richiesta asincrona.C'è un modo per rendere AppDelegate attendere la risposta?

È stato utile?

Soluzione

Penso che non ci sia una buona soluzione per consentire all'app delegato attendere la risposta perché se la connessione di rete sarà scarsa, il tempo di caricamento dell'app sarà molto lungo e il sistema operativo potrebbe uccidere la tua app o l'utente può spegnerlo.

.

È possibile aggiungere un po 'di caricamento del controller di visualizzazione (con animazione in modo che l'utente saprà che l'app sta facendo qualcosa) anziché a casa uno e quando si riceve la risposta presente la visualizzazione appropriata all'utente (il sege Modal potrebbe fare il lavoro). Spero questo aiuto

Altri suggerimenti

Una soluzione migliore è utilizzare gli schermi Splash.Qui è quando la tua app viene caricata in AppDelegate, crea e premi un controller di visualizzazione splash.Che contiene solo un singolo uiimageview che copre la schermata intera che mostra la tua applicazione Splash Image.Dopo il completamento della chiamata asincrona, POP che Splash View Controller e spinge il tuo controller di visualizzazione richiesto.

Molte app usano questo modo per scaricare i dati asincroni necessari prima di mostrare l'app.In modo che l'utente non veda schermi vuoti o dati di immondizia.

Se qualcosa viene fallito come errore di connettività Internet o errore di risposta del server, ecc., Mostra errore all'utente ed eseguire la gestione degli errori in base alla logica dell'app.

È possibile navigare in modo programmatico al controller di visualizzazione della root come

[self.navigationController popToRootViewControllerAnimated:YES];
.

Questo codice può essere inserito nella condizione del risultato.

O sulla tua strada, penso che tu sia creato un seguice per la navigazione al rootviewcontroller.È possibile eseguire programmaticamente un segue usando

- (void)performSegueWithIdentifier:(NSString *)identifier sender:(id)sender
.

Se si utilizza l'AFNetworking, basta aggiungere un metodo nel blocco di successo e passare la risposta a quel metodo in un parametro di dizionario.Controlla la tua risposta nel metodo e scegli il controller che si desidera apportare il controller di visualizzazione della root da quel metodo.

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