Pergunta

Estou usando o NetworkActivityIndicator para mostrar que meu aplicativo está fazendo algum trabalho. Quando eu executo o aplicativo no simulador, ele mostra da maneira que eu quero - basicamente girando o tempo todo até que a guia selecionada carregue os dados do servidor - mas quando eu coloco o aplicativo no meu telefone, só recebo uma fração de segundo de O girador antes de desaparecer. Geralmente apenas gira logo antes da exibição na tela.

Ideias?

EDIT: O problema pode ter a ver com o fato de eu estar usando um tabbar ... no simulador, o AtivityIndicator girará na tela/tab 1 enquanto a tela/guia 2 estiver carregando. No telefone, só vejo o ActivityIndicator por uma fração de segundo depois que a tela 2 finalmente aparece.

-(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
}
Foi útil?

Solução

Você liga o spinner aqui ...

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

Mas imediatamente você desliga ...

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

Claro que não vai mostrar. Estou surpreso que ele apareça no simulador.

o -doneSpinning o método deve ser chamado depois -getDataFromServer está pronto, ou apenas fazer

UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
[self getDataFromServer]; // assumes it is blocking.
app.networkActivityIndicatorVisible = NO;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top