Frage

Ich bin mit dem NetworkActivityIndicator zu zeigen, dass meine App einige Arbeit tut. Wenn ich die app im Simulator ausführen, zeigt es, wie ich will - im Grunde die ganze Zeit, bis die ausgewählte Registerkarte Lasten Spinnen die Daten vom Server - aber wenn ich die App auf meinem Handy setzen, bekomme ich nur einen Bruchteil einer Sekunde von der Spinner, bevor es verschwindet. In der Regel nur dreht sich kurz vor der Ansicht auf dem Bildschirm erscheint.

Ideen?

EDIT: Das Problem könnte mit der Tatsache zu tun, habe ich eine TabBar bin mit ... Im Simulator die ActivityIndicator drehen sich auf dem Bildschirm / Tab 1, während Screen / Tab 2 geladen ist. Am Telefon, sehe ich nur den ActivityIndicator für einen Bruchteil einer Sekunde nach dem Screen 2 endlich erscheint.

-(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
}
War es hilfreich?

Lösung

Sie schalten den Spinner hier ...

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

Aber sofort Sie sie ausschalten ...

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

Natürlich wird es nicht zeigen. Ich bin überrascht, es im Simulator zeigt.

Die -doneSpinning Methode aufgerufen werden sollte nach -getDataFromServer getan wird, oder tut nur

UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
[self getDataFromServer]; // assumes it is blocking.
app.networkActivityIndicatorVisible = NO;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top