2010-07-08 8 views
0

J'utilise une application qui nécessite que LocationServices soit activé. Je vérifie si elles sont en faisant un appel au service et attraper l'erreur. Dans le cas d'erreur, je souhaite afficher une alerte alertant l'utilisateur pour qu'il active les services de localisation. J'ai déjà un autre AlertView ouvert quand ce test arrive. Je veux fermer celui-là et donner à l'utilisateur la boîte de dialogue que j'ai mentionnée précédemment.Fermer UIAlertView et remplacer par un autre

Actuellement, je

case kCLErrorDenied: // CL access has been denied (eg, user declined location use) 

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"NOTICE" 
       message:@"Sorry, this application needs your location. Please select 'Allow' when asked to use your current location. You don't need to be on or near the trail." 
       delegate:self 
       cancelButtonTitle:nil 
       otherButtonTitles:@"EXIT"]; 
    [alert show]; 
    [alert release]; 
    //exit(0); 
    break; 

Cela provoque l'application juste sortie. J'avais une sortie NSLog là-dedans, donc je sais que ça arrive dans ce cas.

Répondre

1

Ici, vous spécifiez delegate: self, puis il recherche les gestionnaires d'alertes déclarés à UIAlertViewDelegate et lorsqu'il ne le trouve pas en panne.

Vous devez définir

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 

dans votre classe.

Vous pouvez également implémenter d'autres méthodes de UIAlertViewDelegate qui vous aideront dans votre tâche requise.

+0

Merci. Je l'ai remarqué aussi. J'ai mis du code de manipulation là-dedans et ça marche très bien maintenant. – Adam

0

Vous devez garder une trace de l'alerte précédente avec une variable d'instance et appeler la méthode pour fermer cette boîte de dialogue précédente avant d'afficher la nouvelle. Vous avez également besoin d'un gestionnaire de délégué pour l'alerte.

Questions connexes