在视图控制器中,我有两个警报视图:
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”。
欢迎任何帮助。
答案 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"
当然,您可以将这些组合用于您的用例。