Actuellement j'ai une classe surgissent UIAlertView
s 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 UIAlertView
s 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 UIAlertView
s?
Réponses
Trop de publicités? 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) {
// ...
}
}
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)!
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é!
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.