cuestión UIAlertView / Roscado
-
19-09-2019 - |
Pregunta
En mi aplicación, cuando se pulsa un botón determinado, llamo a un método (postButtonClicked:
) que analiza un servicio web en un hilo separado. entonces puedo mostrar al usuario una UIAlertView
para informarles si la llamada se ha realizado correctamente o no.
Este es el código que utilizo:
- (void)postButtonClicked:(id)sender {
[NSThread detachNewThreadSelector:@selector(postViaWebservices) toTarget:self withObject:nil];
}
- (void)postViaWebservices {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
WebServiceManager *wsm = [[WebServiceManager alloc] init];
BOOL success = [wsm callPost];
if (success) {
[self performSelectorOnMainThread:@selector(postSuccess) withObject:nil waitUntilDone:NO];
} else {
[self performSelectorOnMainThread:@selector(postFailure) withObject:nil waitUntilDone:NO];
}
[wsm release];
[pool release];
}
- (void)postSuccess {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:nil
message:@"Success message"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
- (void)postFailure {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:nil
message:@"Failure message"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
}
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
...
}
Esta todo funcionaba bien hasta que he añadido el alertView:clickedButtonAtIndex:
al controlador de vista (requerido para otro UIAlertView
I pantalla). Ahora, cada vez que llamo postButtonClicked:
, la aplicación se cierra. Sin embargo, si quito alertView:clickedButtonAtIndex:
, a continuación, llamar postButtonClicked:
, la aplicación funciona bien.
No estoy seguro de lo que tengo que hacer para solucionar este problema.
Solución
Independientemente de si o no el contenido del método vista delegado de alerta es relevante para el éxito / fracaso mensajes, todavía podría ser un problema, por lo que nos muestra el contenido de ese método puede ser la única manera de conseguir que una respuesta . De cualquier manera, el método vista delegado de alerta se llama cuando se pulse en Aceptar en el éxito / falla mensajes, porque se está configurando como el delegado alertas self
. Si no desea que el método para invocar al despedir el éxito / fracaso alertas, no establezca el delegado.