Domanda

Sto usando il NetworkActivityIndicator per dimostrare che la mia applicazione sta facendo un certo lavoro. Quando eseguo l'applicazione nel simulatore, mostra il modo in cui voglio - fondamentalmente girare per tutto il tempo fino a quando i carichi scheda selezionata i dati dal server - ma quando ho messo l'applicazione sul mio telefono, ho solo una frazione di secondo di la filatrice prima che scompaia. Di solito gira solo a destra prima sullo schermo appare il simbolo di visualizzazione.

idee?

EDIT: Il problema potrebbe avere a che fare con il fatto che sto usando un TabBar ... Nel simulatore del ActivityIndicator girerà su schermo / Tab 1 mentre Schermo / Tab 2 è carico. Al telefono, vedo solo l'ActivityIndicator per una frazione di secondo dopo Screen 2 appare alla fine.

-(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
}
È stato utile?

Soluzione

Si accende il filatore qui ...

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

Ma subito si spegne ...

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

Naturalmente sarà non mostrano. Sono sorpreso che mostra nel simulatore.

Il metodo -doneSpinning deve essere chiamato dopo -getDataFromServer è fatto, o semplicemente fare

UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
[self getDataFromServer]; // assumes it is blocking.
app.networkActivityIndicatorVisible = NO;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top