Show Alert in clickedButtonAtIndex?

2019-02-20 14:24发布

问题:


i need to show a confirm alert after the user press buttonIndex 1 but... if i use popViewcontroller in clickedButtonAtIndex it crash without errors.

The problem is that

[self.navigationController popViewControllerAnimated:YES];

is called before second Alert click...

how to fix?

This is my code:

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
    if (buttonIndex == 1) {
        UIAlertView *alert = 
            [[UIAlertView alloc] initWithTitle:@"OK!"
                                    message:@"Completed"
                                    delegate:self 
                    cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
            [alert show]; 
            [alert release];

            [self.navigationController popViewControllerAnimated:YES];
    }
}

回答1:

Set the tag properties of the two UIAlertViews to 1 and 2, respectively. Then, in the delegate method, use if statements to check the tag of the UIAlertView argument.

Example:

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if (alertView.tag == 1)
    {
        //check the button index
        //create and display the other alert view (set the tag property here to 2)
    }
    else if (alertView.tag == 2)
    {
        //pop the view controller
    }
}