NetworkActivityIndicator не работает одинаково на iPhone и симуляторе? - PullRequest
0 голосов
/ 13 апреля 2010

Я использую NetworkActivityIndicator, чтобы показать, что мое приложение выполняет некоторую работу. Когда я запускаю приложение в симуляторе, оно показывает, как я хочу - в основном вращается все время, пока выбранная вкладка не загружает данные с сервера - но когда я помещаю приложение на свой телефон, я получаю только долю секунды вертушка, прежде чем она исчезнет. Обычно вращается только перед тем, как на экране появляется вид.

Идеи

РЕДАКТИРОВАТЬ: Возможно, проблема связана с тем, что я использую TabBar ... В симуляторе ActivityIndicator будет вращаться на экране / вкладке 1, а экран / вкладка 2 загружается. На телефоне я вижу ActivityIndicator только на долю секунды после того, как наконец появляется Screen 2.

-(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
}

1 Ответ

0 голосов
/ 13 апреля 2010

Вы включаете счетчик здесь ...

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

Но сразу же выключаешь его ...

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

Конечно, это не покажет. Я удивлен, что это показывает в симуляторе.

Метод -doneSpinning должен вызываться после выполнения -getDataFromServer или просто сделать

UIApplication* app = [UIApplication sharedApplication];
app.networkActivityIndicatorVisible = YES;
[self getDataFromServer]; // assumes it is blocking.
app.networkActivityIndicatorVisible = NO;
...