2013-02-21 1 views
0

je mettre en œuvre une application iOS très simple il suffit de pratiquer montrant un pop up alerte, et je reçois une erreur lorsque j'appuie sur le bouton d'alerte:Utilisation de base de UIAlertView provoque EXC_BAD_ACCESS

Discussion 1: EXC_BAD_ACCESS (code = 1, adresse = 0x676f6f57)

Voici le code:

- (IBAction)AlertButton { 


    alert = [[UIAlertView alloc] 
     initWithTitle:@"Alert" message:@"Alert" 
     delegate:self 
     cancelButtonTitle:@"Dismiss" 
     otherButtonTitles:@"Apple", "Google" ,nil]; 
    [alert show];} 


-(void)alertView :(UIAlertView *)alertView clickedButttonAtIndex:(NSInteger)buttonIndex{ 

    if(buttonIndex == 1){ 
     [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://apple.com"]]; 
    } 
    if(buttonIndex == 2){ 
     [[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"http://google.com"]]; 
    }} 
+2

S'il vous plaît ne pas poster un lien vers l'ensemble de votre projet. Si vous ne pouvez pas décrire votre problème assez succinctement pour entrer dans le corps du message ici, alors votre question n'est pas appropriée pour Stack Overflow. –

+0

Je crois que le problème est le nom de votre bouton = AlertButton et le nom de l'IBaction est également AlertButton. Il n'y a rien de mal avec le UIAlertView dans le code ci-dessus. –

Répondre

4

le problème est avec le constructeur du UIAlertView, dans la ligne:

otherButtonTitles:@"Apple", "Google" ,nil]; 

vous oubliez le @ avant "Google". Et enfin changer:

-(void)alertView :(UIAlertView *)alertView clickedButttonAtIndex:(NSInteger)buttonIndex{ 

par

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
+1

"En outre, vous devez déclarer l'adoption du protocole UIAlertViewDelegate sur votre classe" - non, vous n'avez pas à le faire, c'est juste un indice pour le compilateur. –

+0

Oui, vous avez raison, dans ce cas n'est pas nécessaire, je répare la réponse – tkanzakic

+1

Merci. (Ce n'est pas que je préconise de l'éviter, parce que c'est une bonne pratique de le faire, juste pour le compte rendu - les gens oublient souvent que Objective-C est un langage très dynamique où les déclarations comptent le moins.) –

1

le vrai problème est que vous manquez un @ devant "Google", donc ce n'est pas un NSString et d'où le crash.

utilisent ce .h

pas besoin de IBOutlet.just

UIAlertView *alert; 

.m

alert = [[UIAlertView alloc] 
     initWithTitle:@"Alert" 
       message:@"Alert" 
      delegate:self 
    cancelButtonTitle:@"Dismiss" 
    otherButtonTitles:@"Apple", @"Google", nil 
]; 
+0

Merci beaucoup :) – Rayan

Questions connexes