questão UIAlertView / Enfiar
-
19-09-2019 - |
Pergunta
Na minha App, quando um determinado botão é pressionado, eu chamar um método (postButtonClicked:
) que analisa um serviço web em um segmento separado. Eu, então, mostrar ao usuário uma UIAlertView
para informá-los se a chamada foi bem sucedida ou não.
Aqui está o uso de código I:
- (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 multa tudo funcionou até que eu adicionei o alertView:clickedButtonAtIndex:
ao controlador de exibição (obrigatório para uma outra exposição UIAlertView
I). Agora, cada vez que eu chamo postButtonClicked:
, a App deixa de funcionar. No entanto, se eu remover alertView:clickedButtonAtIndex:
, em seguida, chamar postButtonClicked:
, o App funciona OK.
Eu não tenho certeza o que eu preciso fazer para corrigir isso.
Solução
Independentemente de estarem ou não o conteúdo do método de alerta exibição delegado é relevante para o sucesso / falha mensagens, pode ainda ser um problema, por isso, mostrando-nos o conteúdo do que o método pode ser a única maneira de obter uma resposta . De qualquer maneira, o método de vista delegado alerta é chamado quando você toca em OK sobre o sucesso / falha mensagens, porque você está definindo os alertas delegar como self
. Se você não quiser que o método para invocar quando demitir o sucesso / falha alertas, não defina o delegado.