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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top