iPhone UIActivityIndicatorView Mentre Caricamento UIViewController
-
30-09-2019 - |
Domanda
Ho una domanda con un'UITabBarController con cinque schede. I test in mostra dispositivo reale che il passaggio da una scheda all'altra, può assumere una o più secondi per caricare i punti di vista, perché ho anche scaricare alcuni dati da Internet.
Quello che vorrei fare è quello di mostrare un UIActivityIndicatorView mentre la vista è carico, ma non ho potuto trovare una soluzione. Forse non ho cercato il modo giusto.
Potrebbe qualcuno aiutarlo?
Soluzione
Si deve scaricare tutti i dati con una richiesta asincrona, ASIHTTPRequest è un bel wrapper per questo.
Poi per l'UIActivityIndicatorView queste sono opzioni popolari:
- Mostra sulla scheda, prima ancora di carico qualsiasi altra cosa nella vista. E quando i dati sono pronti solo nascondere e mostrare le informazioni complete.
- Mostra la tua visione incompleta, e ADD una sovrapposizione con la UIActivityIndicatorView.
Altri suggerimenti
Il modo in cui lo faccio:
Creare una classe LoadingViewController con un UILabel, un UIActivityIndicator e sfondo nero.
Nel metodo viewDidLoad, ho impostato:
[self.view setAlpha:0.0];
[self.activityIndicator startAnimating];
I implementare due metodi:
-(void)appear{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[self.view setAlpha:0.65];
[UIView commitAnimations];
}
-(void)disappear{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[self.view setAlpha:0.0];
[UIView commitAnimations];
}
l'etichetta è possibile impostare un testo personalizzato.
Importa questa classe nella classe che si sta lavorando e basta chiamare:
[loadingViewController appear];
e
[loadingViewController disappear];
Non ho un Mac con me in questo momento e non può verificare se ho appena scritto eventuali errori, ma spero che si ottiene l'idea:)
Io preferisco sempre fare una classe personalizzata per questo nel caso in cui ne avrò bisogno in molti posti a mio app.