iphone navigationController: aguarde a resposta do uialertview antes de sair da exibição atual

Eu tenho uma visão com um botão de volta gerenciado com um controlador de navegação e quero verificar se um arquivo foi salvo quando o usuário clicar no botão Voltar. Se o arquivo tiver sido salvo, você voltará à visualização anterior, caso contrário, um uialertview perguntará se deseja salvar o arquivo ou não.

Então eu fiz isso, mas a exibição desapareceu e a visualização do alerta apareceu depois.

-(void)viewWillDisappear:(BOOL)animated {
if(!self.fileSaved){
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"" message:@"Save the file?"  delegate:self cancelButtonTitle:@"No" otherButtonTitles:@"Yes",nil];
    [alert show];
    [alert release];
}
}

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
switch (buttonIndex) {
    case 0:
        NSLog(@"NO");
        break;
    case 1:
        NSLog(@"yes");
        break;
    default:
        break;
}
}

questionAnswers(4)

yourAnswerToTheQuestion