2 AlertView avec chacune des actions différentes à effectuer
Bonjour j'ai 2 UIAlertView dans mon code.
Selon l'AlertView l'action a représenter est différente.
Je n'ai pas trouvé comment faire vu qu'on ne peut utiliser qu'une instance de alertView clickedButton AtIndex
Voila mes 2 AlertView et ce que j'aimerais que chacune d'elle fasse
UIAlertview 1
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@Erreur
message:@Impossible de se connecter au serveur distant, vérifiez que vos données cellulaires sont activées
delegate:self
cancelButtonTitle:@Réglages
otherButtonTitles:@Réesayer, nil];
[alert show];
}
Actions UIAlertView 1
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 0)
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
if (buttonIndex == 1)
{
[self lancerConnexion];
}
}
UIAlertView2
- (IBAction) appeler:(id)sender {
Variables *objTelAgence = [Variables getTelAgence];
NSString *phoneCallNum = [NSString stringWithFormat:@%@",objTelAgence.telAgence];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:phoneCallNum message:@"" delegate:self cancelButtonTitle:@Annuler otherButtonTitles:@Appeler, nil];
[alert show];
}
Actions UIAlertView 2
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
if (buttonIndex == 0){
//Supprimer de l'alertView, c'est bien comme ça ?
[alertView removeFromSuperview];
}
else{
[self appelAgence];
}
}
-(void) appelAgence
{
Variables *objTelAgence = [Variables getTelAgence];
NSString *phoneCallNum = [NSString stringWithFormat:@tel/%@",objTelAgence.telAgence];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneCallNum]];
}
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Solution rapide, utiliser des tags.
Lors de la création :
Dans la méthode delegate:
Merci, c'est normal que le tag soit un Int ? On ne peut pas mettre du texte, comme tu as fait dans le if ?
Tu as défini tes alertes avec un titre spécifique, c'est bien. Et tu peux utiliser le titre ...
Sinon:
https://github.com/AliSoftware/OHAlertView
Merci jpimbert ça fonctionne bien
Oui.
Qui a dit que mon alertViewConnectionErrorTag était un NSString ?
En général, un "==" entre 2 NSString, on évite, car c'est souvent pas ce à quoi on s'attend.
Sinon, tu peux très bien avoir un enum avec les 2 tags.
Les deux méthodes sont rapides mais beurk .
Merci le MVC.
Et j'imagine que si on a besoin d'afficher cette alert view à plusieurs endroits, on va copier/coller tout ce petit monde dans chaque controller.
Il existe sur github des categories pour utiliser des blocks avec les UIAlertView, c'est déjà plus propre.
Sinon, de manière générale (donc valable aussi quand tu as deux tableview pour un controller),
le delegate n'est pas forcément le controller.
Tu peux créer une classe juste pour répondre aux delegate de toutes tes alert view et la dériver pour chaque alert view.
Tu peux même dériver UIAlertView et en faire son propre delegate si tu n'as pas peur d'écrire :
alert.delegate = alert.