Une de mes méthodes envoie un message à un objet (que savez-vous à ce sujet), et attend un BOOL pour une réponse. Toutefois, la réponse BOOL attendue est basée sur la réponse à une UIAlertView créée dans la méthode de l'objet récepteur. Cependant, le code ne s'arrête pas en attendant que l'utilisateur réponde à UIAlertView. Mon problème est: comment utiliser -alertView: clickedButtonAtIndex dans la valeur de retour de la méthode?Pause de l'exécution du code jusqu'à ce que le bouton UIAlertView soit enfoncé?
Voici le code du message court (dans cette construction, je me attendais navigateAwayFromTab à changer en fonction de l'entrée utilisateur dans le UIAlertView, mais il ne fait jamais une chance):
- (BOOL)readyToNavigateAwayFromTab {
NSLog(@"message received by Medical View");
navigateAwayFromTab = NO;
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Navigate Away From Tab?"
message:@"Navigating away from this tab will save your work."
delegate:self
cancelButtonTitle:@"Cancel"
otherButtonTitles:@"OK", nil
];
[alert show];
[alert release];
return navigateAwayFromTab;
}
#define CANCEL 0
#define OK 1
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if(buttonIndex == OK) navigateAwayFromTab = YES;
}
J'ai lu sur le débat modal UIAlertView, et je suis d'accord avec la mise en œuvre d'Apple - au moins comme la règle. Cependant, dans ce cas, je ne vois aucun moyen de résoudre le problème en mettant du code dans -alertView: clickedButtonAtIndex car je n'ai pas besoin d'exécuter du code basé sur le UIAlertView, j'ai juste besoin de lire la réponse. Des suggestions sur comment je peux atteindre ma prison? J'ai déjà essayé une boucle while après [show d'alerte], mais l'alerte ne s'affiche même pas, et pour un certain nombre de raisons, je ne peux pas utiliser -viewWillDisapear.
Modifier
Pour ceux qui regardent cette question à l'époque ios moderne, cette question avaient trait à ios 2
Solution brillante. Vive les drapeaux! Merci. – JoBu1324
Wow. Je n'aurais jamais imaginé que tu reviendrais, ma réponse était si tardive. Content que cela ait aidé. :) –