2010-01-20 13 views
5

tengo un método utilizado para guardar una imagen cuando el usuario hace clic en Guardar. Utilizo performSelectorInBackground para guardar la imagen, el viewcontroller aparece y aparece el viewcontroller anterior.performSelectorInBackground, notificar a la otra cuando se hace viewcontroller

Quiero la mesa (en la previousUIViewController) para recargar sus datos cuando se realiza la imagesaving.

¿Cómo puedo hacer esto?

el método Save se llama así:

[self performSelectorInBackground:@selector(saveImage) withObject:nil]; 
[self.navigationController popViewControllerAnimated:YES]; 

Respuesta

9

En el método de saveImage, enviará una notificación justo después de terminar de guardar la imagen y antes de regresar a partir del método. Algo como esto:

// post notification 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"ImageSaved" object:nil]; 

En el manejo de la mesa de control, aplicar

- (void) imageSaved:(NSNotification *)notification{ 

    [self.tableView reloadData]; 

} 

y en su método viewDidLoad agregue el código siguiente para registrar las notificaciones:

[[NSNotificationCenter defaultCenter] addObserver:self 
           selector:@selector(imageSaved:) 
               name:@"ImageSaved" object:nil]; 

finalmente, anular el registro en el dealloc método añadiendo

[[NSNotificationCenter defaultCenter] removeObserver:self]; 
+0

Excelente, gracias. – McDJ

2

creo que el camino a seguir es llamar al método al final de la rutina saveImage. Tal vez algo como

[self performSelectorInBackground:@selector(saveImage) withObject:previousView]; 

Y si desea mantener saveImage agnóstico, crear un protocolo con una devolución de llamada que su previousView puede utilizar.

@protocol processingFinishedDelegate 
-(void)processingFinished; 
@end 

así que al final de saveImage tendrá:

[(id<processingFinishedDelegate>)object processingFinished]; 

y por supuesto su interfaz de clase previousView debe manejar el delegado.

0

Estoy teniendo problemas al usar este actualizar UITextView con el enfoque de "Unforgiven", sugirió. Intenté un par de formas diferentes pero todas fallaron ... También intenté notificaciones + observadores con esto pero no éxito ... ¿Por qué? Es bien en UILabel pero sin UITextView está trabajando con este mensaje:

trató de obtener la cerradura web desde un subproceso distinto del hilo principal o el hilo web. Esto puede ser el resultado de llamar a UIKit desde un hilo secundario. Estrellándose ahora ...

Cuestiones relacionadas