2010-05-12 3 views
2

Je suis vraiment déconcerté par celui-ci. J'ai mis en place deux UIActionSheets dans mon application. Ils fonctionnent parfaitement bien jusqu'à ce que vous utilisiez le bouton Annuler dans les UIActionSheets.UIActionSheet Le bouton Annuler continue à bloquer mon application

Lorsque je m'éloigne de la page, UIAactionSheet retourne aussi il bloque mon application.

Est-ce que quelqu'un a des idées aussi pourquoi?

-(IBAction) phoneButtonClicked:(id)sender 
{ 
// open a dialog with just an OK button 
phoneActionSheet = [[UIActionSheet alloc] initWithTitle:nil 
                delegate:self cancelButtonTitle:@"Cancel" 
                destructiveButtonTitle:nil 
                otherButtonTitles:[NSString stringWithFormat:@"Phone: %@",phone],nil]; 
phoneActionSheet.actionSheetStyle = UIActionSheetStyleDefault; 
[phoneActionSheet showInView:self.view]; // show from our table view (pops up in the middle of the table) 
[phoneActionSheet release]; 
} 

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { 

if (actionSheet == phoneActionSheet) { 

    if(buttonIndex == 0){ 
      NSString *callPhone = [NSString stringWithFormat:@"tel:%@",phone]; 
      NSLog(@"Calling: %@", callPhone); 
      [[UIApplication sharedApplication] openURL:[NSURL URLWithString:callPhone]]; 
    } 
} 

} 
+0

Est-ce que quelque chose est enregistrée sur la console lorsque votre application tombe en panne? Si oui, poster le message aiderait. – jlehr

Répondre

1

Je suggère de ne pas libérer la phoneActionSheet dans phoneButtonClicked. Je suppose que vous pourriez essayer de faire quelque chose avec un mauvais pointeur. Une autre bonne aide est d'utiliser NSZombieEnabled.

+0

Rien n'a été enregistré dans la console mais la suppression de la commande de libération a fonctionné. – user337174

+0

La feuille fuit probablement sans cette version. Chaque fois que vous appelez phoneButtonClicked, vous créez une nouvelle feuille que vous ne libérez plus. Cependant, vous devez le libérer après que la feuille a été rejetée, pas directement après sa création. – JeremyP

+0

Je libère généralement les feuilles d'action dans l'appel clickedButton et/ou annulé. Ce n'est pas le meilleur, mais il garde leur durée de vie courte. –

Questions connexes