多个 UIAlertView 问题

Posted

技术标签:

【中文标题】多个 UIAlertView 问题【英文标题】:multiple UIAlertView issue 【发布时间】:2012-01-31 17:48:33 【问题描述】:

我的代码有问题,我有两个 UIAlertViews 代码块,一个带有取消和确定按钮,另一个用于制作 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”按钮(确定)时,它会将我带到照片库中的上传图片...

这个问题可能有点傻,但我该如何区分呢?

【问题讨论】:

【参考方案1】:

几种方法。

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。

【讨论】:

以上是关于多个 UIAlertView 问题的主要内容,如果未能解决你的问题,请参考以下文章

具有多个文本输入的 UIAlertView?

如何防止多个 UIAlertView 堆叠?

多个 UIAlertView;每个都有自己的按钮和动作

如何在 iOS 7 中向 UIAlertView 添加多个 UITextField?

多个错误显示在同一个 UIAlertView

防止多个UIAlertView重叠弹出