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?

È stato utile?

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:

  1. 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.
  2. 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.

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