2010-11-30 5 views
0

Dans mon Appln je m en utilisant plusieurs UIAlertView et pour déterminer qui entre a été cliqué dans alertview i utilise la méthodeComment puis-je distinguer que le bouton de UIAlertView a été cliqué à partir de plusieurs alertview

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

}

mais je besoin seulement pour le one alertview mais il répondait à toutes les alertes. comment limiter seulement à un alertview ou alertview auquel j'ai besoin de déterminer l'action du bouton

Répondre

3

La pratique courante est d'utiliser un numéro unique pour la propriété tag de chaque UIAlertView, puis vérifiez l'étiquette dans votre callbacks délégué. Un moyen facile de le faire est avec un ENUM:

enum { 
    kServiceErrorAlert = 1, 
    kFailedToSaveAlert = 2 
}; 

... 

alertView.tag = kServiceErrorAlert; 
[alertView show]; 
2

Si vous pouvez vous permettre de fonctionner sur 4.x uniquement, vous pouvez utiliser des blocs et oublier les délégués et les tags:

LambdaAlert *alert = [[LambdaAlert alloc] 
    initWithTitle:@"Test Alert" 
    message:@"See if the thing works."]; 
[alert addButtonWithTitle:@"Foo" block:^{ NSLog(@"Foo"); }]; 
[alert addButtonWithTitle:@"Bar" block:^{ NSLog(@"Bar"); }]; 
[alert addButtonWithTitle:@"Cancel" block:NULL]; 
[alert show]; 
[alert release]; 

Voir LambdaAlert on GitHub .

+0

dans le temps de l'iPhone iOS 4.x est sorti depuis longtemps :) great answer –

Questions connexes