多个UIAlertView问题

时间:2012-01-31 17:48:34

标签: ios xcode uialertview

我的代码有问题,我有两个UIAlertViews代码块,一个带取消和ok按钮,另一个带UIImagePicker

-(IBAction)publicaPeticion
 {
    if([txtPeticion hasText] )
    {

        UIAlertView *alerta = [[UIAlertView alloc]
                              initWithTitle:@"Confirmación de Compra" 
                              message:@"Deseas comprar la petición por $12.00" 
                              delegate:self 
                              cancelButtonTitle:@"Cancelar"
                              otherButtonTitles:@"Aceptar", nil];
        [alerta show];  
    }


}

问题出在publicaPeticion和cargaImagen之间

-(IBAction)cargaImagen
{

    UIAlertView *alert = [[UIAlertView alloc]
                          initWithTitle:@"Subir una imagen" 
                          message:@"¿De donde deseas subir una imagen?" 
                          delegate:self 
                          cancelButtonTitle:@"Cancelar" 
                          otherButtonTitles:@"Desde el equipo",@"Tomar con camara", nil];
    [alert show];


}

以及从照片流或相机中获取图像来源的方法

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    if(buttonIndex == 1)
    {
        picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
        [self presentModalViewController:picker animated:YES];

    }
    if(buttonIndex ==2)
    {
        picker = [[UIImagePickerController alloc] init];
        picker.delegate = self;
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self presentModalViewController:picker animated:YES];
    }
}

问题是,当我按下“Aceptar”按钮(OK)时,它会将我带到照片库中的上传图片......

这个问题可能有点愚蠢,但我怎么能区分呢?

1 个答案:

答案 0 :(得分:11)

有几种方式。

1)

了解如何调用委托方法?

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

alertView参数中,您可以确定调用哪个警报(如果您将cargaImagen和publicaPeticion的警报视图设置为单独的实例变量)。

2)

您可以做的另一件事(也可能更容易)是在alertView上设置tag属性。

在您的'cargaImagen'方法中以及创建UIAlert后,通过alert.tag = 1;将标记设置为1。

然后,在alertView:clickedButtonAtIndex:委托方法中,当alertView.tag == 1时,您会知道它来自cargaImagen,如果它是2(或零),您知道它来自publicaPeticion。