Pregunta

Estoy utilizando el NetworkActivityIndicator para demostrar que mi aplicación está haciendo un trabajo. Cuando ejecuto la aplicación en el simulador, se muestra la forma en que quiero - básicamente girar todo el tiempo hasta que las cargas pestaña seleccionada los datos desde el servidor - pero cuando pongo la aplicación en mi teléfono, lo único que consigue una fracción de segundo de la ruleta antes de que desaparezca. Por lo general, sólo se gira a la derecha antes de que aparezca Ver en la pantalla.

Las ideas?

Edit: El problema podría tener que ver con el hecho de que estoy usando un TabBar ... En el simulador de la ActivityIndicator hará girar en la pantalla / Tab 1, mientras que la pantalla / Tab 2 se está cargando. En el teléfono, solamente veo el ActivityIndicator para una fracción de segundo después de la pantalla 2 aparece finalmente.

-(void)viewDidLoad {

// call to spinTheSpinner
[NSThread detachNewThreadSelector:@selector(spinTheSpinner) toTarget:self withObject:nil];

// method to Get the Data from the Server
[self getDataFromServer];

}

-(void)spinTheSpinner {
    NSLog(@"Spin The Spinner");
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    [UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
    [self performSelectorOnMainThread:@selector(doneSpinning) withObject:nil waitUntilDone:YES];

    [pool release]; 
}

-(void)doneSpinning {
    NSLog(@"done spinning");
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
}

-(void)getDataFromServer {
    // does a bunch of stuff to retrieve and display data
}
¿Fue útil?

Solución

Se enciende el spinner aquí ...

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

Pero de inmediato que lo apaga ...

[self performSelectorOnMainThread:@selector(doneSpinning) …];

Por supuesto que no se mostrará. Me sorprende que muestra en el simulador.

El método -doneSpinning debe ser llamado después -getDataFromServer se hace, o simplemente hacer

UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
[self getDataFromServer]; // assumes it is blocking.
app.networkActivityIndicatorVisible = NO;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top