Multiple UIAlertView; each with their own buttons and actions
There is a useful property tag
for UIView
(which UIAlertView
subclass from). You can set different tag for each alert view.
UPDATE:
#define TAG_DEV 1#define TAG_DONATE 2- (IBAction)altdev { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"titleGoesHere" message:@"messageGoesHere" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Continue", nil]; alert.tag = TAG_DEV; [alert show];}- (IBAction)donate { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"titleGoesHere" message:@"messageGoesHere" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Continue", nil]; alert.tag = TAG_DONATE; [alert show];}-(void)alertView:(UIAlertView *)alertViewclickedButtonAtIndex:(NSInteger)buttonIndex { if (alertView.tag == TAG_DEV) { // handle the altdev ... } else if (alertView.tag == TAG_DONATE){ // handle the donate }}
easier & newer
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... }}
all done!
If you find it dificult to use delegate methods to differently identifying alert view Then you can also use This Category class to use completion Block for each AlertView.
For eg.
UIAlertView* alert1 = [[UIAlertView alloc] initWithTitle:@"AlertView+Block 1" message:@"WithBlocks" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];[alert1 showWithFinishBlock:^(UIAlertView *alertView, NSInteger buttonIndex){ //--AlertView1 Stuff here }];UIAlertView* alert2 = [[UIAlertView alloc] initWithTitle:@"AlertView+Block 2" message:@"WithBlocks" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"OK", nil];[alert2 showWithFinishBlock:^(UIAlertView *alertView, NSInteger buttonIndex){ //--AlertView2 Stuff here }];
I hope this one is the more easiest way as compare to tag + delegate method..