iOS: cómo detener correctamente un indicador de actividad?

Me gustaría detener la animation del indicador dentro de un método llamado por defecto NSNotificationCenter con un nombre de notificaciónNotificación. Entonces estoy haciendo esto en el hilo principal

-(void)method { ... [ind performSelectorOnMainThread:@selector(stopAnimating) withObject:nil waitUntilDone:NO]; } 

No funciona El método se llama correctamente, cualquier otro selector llamado hace su trabajo, pero no deja de Animar. Puse [ind stopAnimating] en otra function y luego lo llamé vía performSelectorOnMainThread pero todavía no funcionó.

También puede usar el siguiente método que inicia y detiene el indicador de actividad en el hilo principal en un solo método, también le permite ejecutar su código de forma asíncrona también:

 - (void)showIndicatorAndStartWork { // start the activity indicator (you are now on the main queue) [activityIndicator startAnimating]; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ // do your background code here dispatch_sync(dispatch_get_main_queue(), ^{ // stop the activity indicator (you are now on the main queue again) [activityIndicator stopAnimating]; }); }); } 

Prueba esto…

Crea un método que detenga tu animation.

 -(void)stopAnimationForActivityIndicator { [ind stopAnimating]; } 

Reemplace su método de esta manera:

 -(void)method { ... [self performSelectorOnMainThread:@selector(stopAnimationForActivityIndicator) withObject:nil waitUntilDone:NO]; } 

Debería hacer la magia …

Tratar :

 -(void)method { dispatch_async(dispatch_get_main_queue(), ^{ [ind stopAnimating]; }); }