J'ai récemment mis en œuvre: https://github.com/gpambrozio/BlockAlertsAnd-ActionSheetsPersonnalisé UIAlertView pas de rappel de délégué?
J'ai importé tous les fichiers nécessaires dans mon application et compile bien. Maintenant, la question est, comment puis-je faire face au changement de logique?
Alors avant avec UIAlertView d'Apple, je fait quelque chose comme ceci:
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Which Key?" message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:nil];
for (NSMutableDictionary *dict in myArray) {
[alertView addButtonWithTitle:[dict objectForKey:@"Key"]];
}
[alertView show];
[alertView release];
Ensuite, dans le rappel du alertview je ferais ceci:
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
[[Singleton sharedSingleton] setKey:buttonIndex];
}
Maintenant, avec le BlockAlertView
il n'y a pas de rappel pour quel bouton a été pressé, comment ils manipulent un bouton presse est de mettre le code que vous voulez exécuter dans le bloc comme je le montre ci-dessous. Quoi qu'il en soit voici comment un BlockAlertView similaire regarderait:
BlockAlertView *alertView = [BlockAlertView alertWithTitle:@"Which Key?" message:nil];
for (NSMutableDictionary *dict in myArray) {
[alertView addButtonWithTitle:[dict objectForKey:@"Key"] block:^{
//Not sure what to do here
}];
}
[alertView show];
Maintenant, voici ce que je ne sais pas quoi faire, dans ce bloc comment puis-je obtenir ce que je faisais avant avec UIAlertView natif d'Apple? Je ne peux pas accéder à l'index du bouton et je ne peux pas non plus accéder au nom du bouton (ce qui ne serait pas utile dans mon cas puisque j'ai besoin de l'index)
Quoi qu'il en soit, comment dois-je faire ce que je fais? fait avec UIAlertView natif d'Apple, mais avec la logique de BlockAlertView?
Merci!
Edit1 @Christian Pappenberger:
C'est le .h de BlockAlertView et je ne pense pas qu'il y ait un protocole que je peux ajouter à moins que je me trompe. La voici:
@interface BlockAlertView : NSObject {
@protected
UIView *_view;
NSMutableArray *_blocks;
CGFloat _height;
}
+ (BlockAlertView *)alertWithTitle:(NSString *)title message:(NSString *)message;
- (id)initWithTitle:(NSString *)title message:(NSString *)message;
- (void)setDestructiveButtonWithTitle:(NSString *)title block:(void (^)())block;
- (void)setCancelButtonWithTitle:(NSString *)title block:(void (^)())block;
- (void)addButtonWithTitle:(NSString *)title block:(void (^)())block;
- (void)show;
- (void)dismissWithClickedButtonIndex:(NSInteger)buttonIndex animated:(BOOL)animated;
@property (nonatomic, retain) UIImage *backgroundImage;
@property (nonatomic, readonly) UIView *view;
@property (nonatomic, readwrite) BOOL vignetteBackground;
@end
Merci qui a semblé fonctionner. Aussi juste pour que je sache pour l'avenir, comment pourrais-je exécuter certains codes en fonction d'un titre de bouton spécifique mais je ne suis pas sûr de l'index de celui-ci? ex: Dans le clickedButtonAtIndex je peux vérifier les chaînes de titre de bouton spécifiques et faire le code basé sur cela. Je ne suis pas sûr de savoir comment je pourrais dans ce scénario. –
j'ai édité ma réponse afin que je puisse ajouter plus de code – tomidelucca
Désolé, je ne savais pas que je n'étais pas clair en vous posant la question! :/Quoi qu'il en soit, permettez-moi de le reformuler. Disons donc que nous avons un NSArray contenant un NSMutableDictionary. Il y a une clé dans le dictionnaire nommé "Couleur", il y a 4 NSMutableDictionary dans le tableau et dans l'ensemble il y a des couleurs: Bleu, Orange, Rouge, Vert respectivement. Alors j'utilise une boucle for à travers le tableau (comme je le fais avec myArray) où j'ajoute un bouton intitulé NSString dans "Color". Alors maintenant que nous avons ajouté tous les boutons, je veux exécuter un certain code lorsque "Red" est pressé.Avec un UIAlertView je vérifierais en vérifiant le NSString dans –