Событие UIAlertView Click внутри делегата UIAlertView

Я новичок в разработке iPhone,

Я хочу реализовать 2 представления предупреждений одно за другим, например, когда пользователь нажимает кнопку удаления, 1-е представление предупреждений будет запрашивать Are you sure want to Delete ? с помощью двух кнопок yes и no

Теперь, если пользователь нажимает yes , то 2-й вид предупреждения появится с сообщением Deleted Successfully !, этот вид предупреждения содержит только кнопку OK, теперь при нажатии этой кнопки OK я хочу вызвать один метод.

и если пользователь нажмет No, ничего не должно произойти, и предупреждение должно быть закрыто.

Вот мой фрагмент кода,

-(void)DeletebtnCliked:(id)sender
{   
    UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"Are you sure want to delete ?"
                                                        message:nil delegate:self 
                                              cancelButtonTitle:nil
                                              otherButtonTitles:@"Yes",@"No",nil];
    [alertView show];
    [alertView release];   
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{ 
    if (buttonIndex == 0)
    {            
         UIAlertView* alertew = [[UIAlertView alloc] initWithTitle:@"Deleted Successfully !"
                                                           message:nil delegate:self 
                                                 cancelButtonTitle:@"OK"
                                                 otherButtonTitles:nil];
        [alertew show];
        [alertew release];

        if (buttonIndex == 0)
        {
            [self MethodCall];
        }
    }
    else if (buttonIndex == 1)
    {
        [alertView dismissWithClickedButtonIndex:1 animated:TRUE];
    } 
}

после написания этого кода я нахожусь внутри бесконечного цикла.

Любая помощь будет оценена по достоинству.


person Krunal    schedule 10.07.2012    source источник
comment
В случае if: if (buttonIndex == 0), почему вы проверяете одно и то же условие внутри него?   -  person Vidya Murthy    schedule 10.07.2012
comment
if (buttonIndex == 0) для, когда пользователь нажимает кнопку Yes   -  person Krunal    schedule 10.07.2012


Ответы (3)


Установите для делегата второго представления предупреждений значение nil:

UIAlertView* alertew = [[UIAlertView alloc] initWithTitle:@"Deleted Successfully !"
                                                            message:nil delegate:nil 
                                                  cancelButtonTitle:@"OK" otherButtonTitles:nil];
person citydeer    schedule 10.07.2012

Либо используйте теги, чтобы справиться с ситуацией, как показано ниже, либо просто установите Delegate nil для внутреннего alertView, который находится внутри метода делегата, чтобы он никогда не вызывался.

-(void)DeletebtnCliked:(id)sender
{   
    UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"Are you sure want to delete ?"
                                                    message:nil delegate:self 
                                          cancelButtonTitle:nil
                                          otherButtonTitles:@"Yes",@"No",nil];
alertView.tag = 1;
[alertView show];
[alertView release];   
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{ 
if (buttonIndex == 0 && alertView.tag == 1)
{            
     UIAlertView* innerAlert = [[UIAlertView alloc] initWithTitle:@"Deleted Successfully !"
                                                       message:nil delegate:nil 
                                             cancelButtonTitle:@"OK"
                                             otherButtonTitles:nil];
    innerAlert.tag = 2;
    [innerAlert show];
    [innerAlert release];

    if (buttonIndex == 0 && alertView.tag == 1)
    {
        [self MethodCall];
    }
}
else if (buttonIndex == 1 && alertView.tag == 1)
{
    [alertView dismissWithClickedButtonIndex:1 animated:TRUE];
} 
}
person superGokuN    schedule 10.07.2012

попробуй это:-

-(void)button:(UIButton *)buttonDelete{
           UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"delete" message:@"Do you Want to delete" delegate:self cancelButtonTitle:@"Cancle" otherButtonTitles:@"Yes", nil];
            alertView.delegate = self;
            alertView.tag = 2000;
            [alertView show];
         }
-(void)buttonUpdate:(UIButton *)buttonEdit{

        UIAlertView *alertView2 = [[UIAlertView alloc] initWithTitle:@"Update" message:@"Do you Want to Update" delegate:self cancelButtonTitle:@"Cancle" otherButtonTitles:@"Yes", nil];
            alertView2.delegate = self;
            alertView2.tag = 20001;
            [alertView show];
    }   
 -(void)buttonAdd:(UIButton *)buttonAdd{
         UIAlertView *alertView3 = [[UIAlertView alloc] initWithTitle:@"Add" message:@"Do you Want to Add" delegate:self cancelButtonTitle:@"Cancle" otherButtonTitles:@"Yes", nil];
            alertView3.delegate = self;
            alertView3.tag = 20002;
            [alertView show];
    }     
  -(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
            if (alertView.tag == 2000){
                if (buttonIndex==0) {
                    NSLog(@"Delete Cancel Button click");
                }
                else{
                    NSLog(@"Delete yes Button is click");
                }

            }
            if (alertView.tag == 20001){
                if (buttonIndex==0) {
                    NSLog(@"update Cancel Button click");
                }
                else{
                    NSLog(@"update yes Button is click");
                }

            }
            if (alertView.tag == 20002){
                if (buttonIndex==0) {
                    NSLog(@"Add Cancel Button click");
                }
                else{
                    NSLog(@"Add yes Button is click");
                }

            }
        }
person Community    schedule 17.04.2015