iOS中的多个警报视图

时间:2015-03-13 00:06:25

标签: ios uialertview

在视图控制器中,我有两个警报视图:

  if (!self.puntoOrigen.latitude){
            UIAlertView *alertView1 = [[UIAlertView alloc]initWithTitle:
                                      @"Debe seleccionar un punto de recojo" message:@"Para ello, centre el punto deseado en la pantalla y pulse el botón O" delegate:self
                                                     cancelButtonTitle:@"Aceptar" otherButtonTitles:nil, nil];
            alertView1.tag = 1;
            [alertView1 show];


        }

        NSLog(@"SESION INICIADA, PUEDE SOLICITAR TAXI");
         [self performSegueWithIdentifier:@"nuevo_servicio_segue" sender:self];
    }
    if (sesion != 1){


        NSLog(@"SESION NO INICIADA, NO PUEDE SOLICITAR TAXI");
    // alerta con dos opciones

        UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:
                                  @"No has iniciado sesión" message:@"Para poder continuar escoje una de las siguientes opciones" delegate:self
                                                 cancelButtonTitle:@"Regístrame" otherButtonTitles:@"Iniciar sesión", nil];
        alertView.tag = 2;
        [alertView show];

    }

然后是两种警报视图的方法:

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:
(NSInteger)buttonIndex{


    if (alertView.tag ==1){
         NSLog(@"ESTOY AQU");
        switch (buttonIndex) {

            case 0:
                break;
            case 1:

                break;

            default:
                break;
        }
    }
    if (alertView.tag == 2){
    switch (buttonIndex) {
        case 0:
            [self performSegueWithIdentifier:@"iniciar_registro_segue" sender:self];
            break;
        case 1:

            [self performSegueWithIdentifier:@"iniciar_sesion_segue" sender:self];
            break;

        default:
            break;
    }
    }


}

在需要时会显示两个警报视图,问题是该方法始终启动第二个条件,“if alertView.tag == 2”。

欢迎任何帮助。

1 个答案:

答案 0 :(得分:0)

您是否已记录该标记?设置后然后在代表处? 此外,你不应该使用if和if条件。它应该是if和elseIf。

原因:您没有检查一个条件,然后检查另一个条件。这是条件还是其他条件。这样它就不会通过所有if语句(除非你当然要检查不同的条件)。

此外,我还没有看到在此处添加标签的原因。您可以在代理中引用按钮中的文本或消息本身。

NSString *buttonTitle = [alertView buttonTitleAtIndex:buttonIndex];

if([buttonTitle isEqualToString:title1]) do something..
else if([buttonTitle isEqualToString:title2]) do something else..

您可以将这些标题设置为const NSStrings或MACRO。

NSString * const title1 = @"Debe seleccionar un punto de recojo"

或者,只需在委托中比较alertView本身的消息:

NSString *msg = [alertView message];

if([msg isEqualToString:msg1]) do something..
else if([msg isEqualToString:msg2]) do something else..

// and then declare the message as const NSString or MACRO.

NSString *const msg1 = @"Para ello, centre el punto deseado en la pantalla y pulse el botón O"
NSString *const msg2 = @"Para poder continuar escoje una de las siguientes opciones"

当然,您可以将这些组合用于您的用例。