38 votes

Plusieurs UIAlertViews pour un délégué

Actuellement j'ai une classe surgissent UIAlertViews ici et là. Actuellement, dans la même classe est le délégué pour ces (c'est très logique qu'il serait). Malheureusement, ces UIAlertViews appelle les mêmes délégué méthodes de la classe. Maintenant, la question est - comment savez-vous à partir de laquelle l'alerte de vue d'un délégué de la méthode est invoquée? Je pensais juste vérifier le titre de l'alerte de vue, mais ce n'est pas très élégante. Quelle est la façon la plus élégante de gérer plusieurs UIAlertViews?

102voto

Can Berk Güder Points 39887

Marquez les UIAlertView s comme ceci:

 #define kAlertViewOne 1
#define kAlertViewTwo 2

UIAlertView *alertView1 = [[UIAlertView alloc] init...
alertView1.tag = kAlertViewOne;

UIAlertView *alertView2 = [[UIAlertView alloc] init...
alertView2.tag = kAlertViewTwo;
 

puis différenciez-les dans les méthodes de délégation à l'aide des balises suivantes:

 - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if(alertView.tag == kAlertViewOne) {
        // ...
    } else if(alertView.tag == kAlertViewTwo) {
        // ...
    }
}
 

4voto

Dan J Points 7314

Pour info, si vous souhaitez cibler juste iOS 4 utilisateurs (ce qui est raisonnable maintenant que ~98,5% des clients ont au moins iOS 4 est installé), vous devez être en mesure d'utiliser les Blocs pour faire vraiment sympa inline manipulation de UIAlertViews.

Voici un Stackoverflow question de l'expliquer:
Bloc pour UIAlertViewDelegate

J'ai essayé d'utiliser Zachary Waldowski de BlocksKit cadre pour cela. Son UIAlertView(BlocksKit) de l'API de référence avait l'air vraiment bien. Cependant, j'ai essayé de suivre ses instructions pour importer les BlocksKit cadre de mon projet, mais malheureusement je ne pouvais pas le faire fonctionner.

Donc, comme on Peut Berk Güder l'indique, j'ai utilisé UIAlertView balises pour l'instant. Mais à un certain moment dans l'avenir, je vais essayer de le déplacer à l'aide de Blocs (de préférence celui qui supporte l'ARC de la zone)!

3voto

JohnSP Points 84

plus facile et plus récent

 UIAlertView *alert = [[UIAlertView alloc] init...
alert.tag = 1;

UIAlertView *alert = [[UIAlertView alloc] init...
alert.tag = 2;



- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if(alertView.tag == 1) {
        // first alert...
    } else  {
        // sec alert...
    }
}
 

terminé!

1voto

Stavash Points 7925

Vous pouvez surmonter toute cette épreuve et vous empêcher d'utiliser des balises en améliorant UIAlertView pour qu'il utilise les rappels en bloc. Découvrez ce blog que j'ai écrit sur le sujet.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X