Detecting button click with UIAlertView

后端 未结 6 1239
难免孤独
难免孤独 2021-01-01 12:10

I am trying to call and alert when a button is pressed. i use this :

-(IBAction)Add { 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @\"add bu         


        
相关标签:
6条回答
  • 2021-01-01 12:30

    I feel if you wish to show a new alert view on button click event of an existing alert view, it would be better to use

    - (void) alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
    {
    
    }
    

    delegate method instead of

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
    
    }
    
    0 讨论(0)
  • 2021-01-01 12:31

    This is your code which i used and added some my code also. **

    -(IBAction) Add 
    {
    
              UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"add button pressed"
    
                                                           message:@"Add to record"
                                                          delegate:nil     
                                                 cancelButtonTitle:@"Cancel" 
                                                 otherButtonTitles:@"OK", nil];
    
           alert.tag=101;//add tag to alert
           [alert show];
           [alert release];     
    }
    

    Now when you press button on alert it will call clickedButtonAtIndex but there should a identifier for every alert. So add tag and then

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex** 
    
    {
    
    //  the user clicked one of the OK/Cancel buttons
    if(alertView.tag == 101)     // check alert by tag 
    {    
    
    if (buttonIndex == 0)
    
       {
    
        //just to show its working, i call another alert view
    
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"OK WORKIng well"
    
                                                        message:@"no error"
                                                       delegate:nil
                                              cancelButtonTitle:@"IWORKS" 
                                              otherButtonTitles:@"NO PRB", nil];
    
        [alert show];
        [alert release];    
    
    }
    
    else
    
    {
        NSLog(@"cancel");       
    }
    }
    }
    

    Hope it helps.

    0 讨论(0)
  • 2021-01-01 12:33
    1)
    .h file 
    @interface MyClassViewController:<UIAlertViewDelegate> 
    
    2)
    .m file
    
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Note"
                                                    message:@"some message"
                                                   delegate:self    // must be self to call clickedButtonAtIndex
                                          cancelButtonTitle:@"Cancel"
                                          otherButtonTitles:@"OK", nil];
    
    
    3)
    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    
      if (buttonIndex == [alertView cancelButtonIndex]) {
        NSLog(@"The cancel button was clicked from alertView");
      }
     else {
    
    }
    }
    
    0 讨论(0)
  • 2021-01-01 12:35

    If you prefer your code to be cleaner and no dependency on delegate, you should try the blocks implementation of UIAlertView:

    https://github.com/steipete/PSAlertView

    Blocks are only supported on iOS 4+ devices though.

    0 讨论(0)
  • 2021-01-01 12:41

    To detect the button clicks the alert view must have an associated delegate, e.g.

    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"add button pressed"
                                                    message:@"Add to record"
                                                   delegate:self    // <------
                                          cancelButtonTitle:@"Cancel"
                                          otherButtonTitles:@"OK", nil];
    
    0 讨论(0)
  • 2021-01-01 12:46

    The buttonIndex of 0 is the cancel button. I would recommend using:

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 0)
    {
          NSLog(@"cancel");   
    }
    else
    {
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"OK works" message:@"no error" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];                                                                                                              
        [alert show];
        [alert release];        
    }
    }
    
    0 讨论(0)
提交回复
热议问题