2010-04-13 5 views
0

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

Идеи?

EDIT: проблема может быть связана с тем фактом, что я использую TabBar ... В симуляторе ActivityIndicator будет вращаться на экране/вкладке 1, пока загружается экран/вкладка 2. По телефону я вижу ActivityIndicator только через секунду после появления Экран 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 
} 
+0

Не могли бы вы показать код, связанный с этой проблемой? – Elegya

ответ

0

Вы поворачиваете на блесны здесь ...

[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; 
+0

Не нужно ли использовать threading для networkActivityIndicator? – Chris

+0

@ Крис: Зачем его вставлять? – kennytm

+0

Пробовал ваше предложение. Все еще играю с ним, но он действует одинаково. Отображение на Симуляторе, только показ на телефоне после переключения экрана. Иногда по телефону он вообще не показывает счетчик. – Chris

Смежные вопросы