self.view setNeedsDisplay y self.view setNeedsLayout no funcionan

Tengo un controller de vista principal que aparece en la pantalla y una class (delegado) que se ejecuta en segundo plano y obtiene posiciones. Cuando obtengo el resultado, invoco el método de delegado en el controller de vista para actualizar la label en la pantalla. Probé de varias maneras, pero aún no había ninguna actualización de la pantalla.

Aquí está el método:

-(void) updateDisplay { NSLog(@"%@",myPosition.currentArea); _area.text = [NSString stringWithFormat:@"area = %@",myPosition.currentShopArea]; //[self.view performSelectorOnMainThread:@selector(setNeedsDisplay) withObject:nil waitUntilDone:YES]; [self.view setNeedsDisplay]; //[self.view setNeedsLayout]; } 

Comprobé la console, muestra el área correcta pero en la pantalla sigue apareciendo nula. Probé de tres forms (comentado anteriormente) pero ninguno de ellos actualiza la pantalla.

Puedes probar 2 cosas:

  1. llamando updateDisplay en el hilo principal:

     [delegate performSelectorOnMainThread:@selector(updateDisplay) withObject:nil waitUntilDone:YES]; 

    Al final, está accediendo a UIKit , así que es mejor hacerlo bien;

  2. si eso no ayuda, intente con:

     [_area setNeedsDisplay]; 

    En este caso también, si fuera recomendable llamar al método en el hilo principal.