Ios UIAlertView按钮操作不工作

Ios UIAlertView按钮操作不工作,ios,uialertview,Ios,Uialertview,我有一个警报视图,当我点击yes按钮时,它应该会产生另一个警报视图和一条toast消息,但它不会发生。我想不出来。这是我的密码: -(void)myMethod { UIAlertView *saveAlert = [[UIAlertView alloc] initWithTitle:@"First Message" message:@"My First message"

我有一个警报视图,当我点击yes按钮时,它应该会产生另一个警报视图和一条toast消息,但它不会发生。我想不出来。这是我的密码:

-(void)myMethod {
    UIAlertView *saveAlert = [[UIAlertView alloc] initWithTitle:@"First Message"
                                                        message:@"My First message"
                                                       delegate:nil
                                              cancelButtonTitle:@"No"
                                              otherButtonTitles:@"Yes", nil];
    saveAlert.tag=0;
    [saveAlert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:NO];
}
这是我用来为不同警报视图提供功能的方法

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if(alertView.tag==0) {

        if (buttonIndex == 0)
        {
            //Code for Cancel button
        }
        if (buttonIndex == 1)
        {
            //code for yes button
            MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];
            hud.mode = MBProgressHUDModeText;
            hud.labelText = @"Successfully displayed First Message";
            hud.margin = 10.f;
            hud.yOffset = 150.f;
            hud.removeFromSuperViewOnHide = YES;
            [hud hide:YES afterDelay:3];

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Second Message"
                                                            message:@"My second message"
                                                           delegate:nil
                                                  cancelButtonTitle:@"No"
                                                  otherButtonTitles:@"Yes",nil];
            alert.tag=1;
            [alert performSelectorOnMainThread:@selector(show) withObject:nil waitUntilDone:YES];
        }
    }

    if (alertView.tag==1) {

        if (buttonIndex == 0)
        {
            //Code for Cancel button
        }
        if (buttonIndex == 1)
        {
            //Code for yes Button
            MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES];
            hud.mode = MBProgressHUDModeText;
            hud.labelText = @"Succesfully displayed Second Message";
            hud.margin = 10.f;
            hud.yOffset = 150.f;
            hud.removeFromSuperViewOnHide = YES;
            [hud hide:YES afterDelay:3];
        }
    }
}

有人能帮忙找到问题吗。为什么在单击第一个警报中的“是”按钮后无法获取第二个警报?

您正在指定nil作为警报视图的代理。您需要指定一个对象,以便可以调用alertView:ClickedButtonIndex:方法

您尚未为您的
UIAlertView
设置代理,还必须确保您的代理符合
UIAlertViewDelegate
协议。找到下面的代码片段

您的控制器符合
UIAlertViewDelegate
协议:

@interface YourViewController : UIViewController <UIAlertViewDelegate> 
实施
UIAlertViewDelegate
delegate方法:

- (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if( 0 == buttonIndex ){ //cancel button
        [alertView dismissWithClickedButtonIndex:buttonIndex animated:YES];
   } else if ( 1 == buttonIndex ){
        [alertView dismissWithClickedButtonIndex:buttonIndex animated:YES];
        UIAlertView * secondAlertView = [[UIAlertView alloc] initWithTitle:@"Second Message"
                                                                   message:@"Displaying second message"
                                                                  delegate:nil
                                                         cancelButtonTitle:@"OK"
                                                         otherButtonTitles:nil];
        [secondAlertView show];
    }
}

如果您想更清楚地处理此问题,可以使用基于块的AlertView。 创建新文件->子类->UIAlertView

SuperAlertView.h

#import <UIKit/UIKit.h>

@class MySuperAlertView;

typedef void (^MySuperAlertViewBlock) (MySuperAlertView *alertView);

@interface MySuperAlertView : UIAlertView

- (instancetype) initWithTitle:(NSString *)title message:(NSString *)message;
- (void) addButtonWithTitle:(NSString *)buttonTitle block:(MySuperAlertViewBlock) block;

@end

@Teja_NVM如果有帮助,您可以接受作为答案或投票,谢谢。
#import <UIKit/UIKit.h>

@class MySuperAlertView;

typedef void (^MySuperAlertViewBlock) (MySuperAlertView *alertView);

@interface MySuperAlertView : UIAlertView

- (instancetype) initWithTitle:(NSString *)title message:(NSString *)message;
- (void) addButtonWithTitle:(NSString *)buttonTitle block:(MySuperAlertViewBlock) block;

@end
#import "MySuperAlertView.h"

@interface MySuperAlertView()<UIAlertViewDelegate>
@property NSMutableArray *blocks;
@end

@implementation MySuperAlertView


- (instancetype)initWithTitle:(NSString *)title message:(NSString *)message
{
    if (self = [super initWithTitle:title message:message delegate:self cancelButtonTitle:nil otherButtonTitles:nil])
    {
        self.blocks = [NSMutableArray array];
    }
    return self;
}

- (void)addButtonWithTitle:(NSString *)buttonTitle block:(MySuperAlertViewBlock)block
{
    [self addButtonWithTitle:buttonTitle];

    [self.blocks addObject:block ? [block copy] : [NSNull null]];
}

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex
{
    MySuperAlertViewBlock block = self.blocks[buttonIndex];

    if ((id) block != [NSNull null]){
        block(self);
    }
}


@end
MySuperAlertView *alertView = [[MySuperAlertView alloc] initWithTitle:@"Info" message:NSLocalizedString(@"EMAIL_SENT_SUCCESSFULL", nil)];
            [alertView addButtonWithTitle:@"Ok" block:^(MySupertAlertView *alertView) {
                // handle result from ok button here
            }];
            [alertView addButtonWithTitle:@"cancel" block:NULL];
            dispatch_async(dispatch_get_main_queue(), ^{
                [alertView show];
            });