Cómo establecer el progreso en UIProgressView

Tengo un problema para calcular el progreso de mi UIProgressView. Mi valor flotante no tiene efecto en el progreso. Traté de configurar el progreso manualmente, pero funciona bien, pero si trato de calcularlo, no funciona.

Aquí está mi código:

- (void) initProgressbar { self.progressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault]; [self.progressView setFrame:CGRectMake(0, 0, SCREEN_WIDTH / 2, 10)]; self.progressView.center = CGPointMake(SCREEN_WIDTH - 110, SCREEN_HEIGHT - 25); self.progressView.progress = 0.0; [self.view addSubview:self.progressView]; } 

nbElementsSync y nbElementsToSync son properties int globales y nbElementsSync se incrementa mediante un bucle antes de updateProgress método updateProgress .

MyController.h

 @interface MyController : UIViewController { NSString *json; int nbElementsToSync; int nbElementsSync; } @property (nonatomic, strong) UIProgressView *progressView; 

MyController.m

 nbElementsSync = 0; // Nb elements synchronized nbElementsToSync = [[json valueForKey:@"count"] intValue]; // Nb elements to synchronize for (NSString* result in results) { nbElementsSync++; [self updateProgress]; } 

Y aquí está mi método para configurar el progreso:

 - (void) updateProgress { [self.progressView setProgress:((float)nbElementsSync / nbElementsToSync)]; NSLog(@"percent : %f", ((float)nbElementsSync / nbElementsToSync)); } 

Resultados de mi NSLog:

 percent : 0.003937 percent : 0.007874 percent : 0.011811 percent : 0.015748 percent : 0.019685 percent : 0.023622 ... 

¿Alguna idea para solucionarlo? Gracias por adelantado.

¿Ha intentado hacer el bucle en un process en segundo plano, no para bloquear las actualizaciones de la interfaz de usuario:

MyController.m

Llame a esto donde necesite:

 [self performSelectorInBackground:@selector(syncInBackground) withObject:nil]; 

Entonces

 - (void)syncInBackground { int nbElementsSync = 0; // Nb elements synchronized int nbElementsToSync = [[json valueForKey:@"count"] intValue]; // Nb elements to synchronize for (NSString* result in results) { nbElementsSync++; float percent = (float)nbElementsSync / nbElementsToSync; [self performSelectorOnMainThread:@selector(updateProgress:) withObject:[NSNumber numberWithFloat:percent] waitUntilDone:NO]; } } - (void) updateProgress:(NSNumber *)percent { [self.progressView setProgress:percent.floatValue]; }