Domanda

Ho un pulsante sul momento navigato a viewcontroller, collegato ad un IBAction.

Nel IBAction creo un UIActivityIndicatorView come al solito, con [addSubView self.view], quindi caricare alcune immagini.

Ho provato setNeedsDisplay sulla vista indicatore, il controller della vista, e la finestra, ma carica ancora le immagini prima di mostrare l'indicatore, che naturalmente è del tutto inutile per me.

Quindi sto cercando un modo per sia la forza di un ridisegno istante (che quando penso che un po 'di più è improbabile che possa rendere il lavoro), o un modo per caricare le immagini dopo che l'indicatore è apparso, o un modo per lanciare un thread separato o simili per avviare l'animazione / visualizzare l'indicatore, o mettere l'indicatore in un viewcontroller separata e in qualche modo forzarlo per aggiungere / si mostra prima di passare alla foto-carico.

Raccomandazioni?

È stato utile?

Soluzione

Quello che faccio in questa situazione è generare un nuovo thread, che libera il thread principale per l'interazione maniglia UI mentre roba è il caricamento in background.

Prima visualizza UIActivityIndicatorView, quindi generare un nuovo filo che carica le immagini, quindi sull'ultima riga del metodo che viene eseguito nel nuovo filo, nascondere il UIActivityIndicatorView.

Ecco un esempio:

//do stuff...
[activityIndicatorView startAnimating];
[NSThread detachNewThreadSelector:@selector(loadImages) toTarget:self withObject:nil];

Nel tuo metodo loadImages:

- (void) loadImages {
   NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
   //load images...
   [activityIndicatorView performSelectorOnMainThread:@selector(stopAnimating)];
   [pool drain];
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top