一个视图中的几个UIAlertView:如何创建不同的委托

时间:2012-03-26 11:34:07

标签: iphone objective-c ios uialertview

  

可能重复:
  multiple UIAlertView issue

我是初学者ios开发者。我遇到了以下问题:

在我的应用程序中有一个带有2个UIAlertView的viewController。其中一个有UIdatePicker,另一个有UIPickerView。换句话说 - 它们是不同的,具有不同的组件和各种处理算法。

他们必须有不同的处理程序。但我不知道,如何在一个viewController上使用“delegate:self”创建不同的处理程序。

我这样做:

-(IBAction)alertDataPicker:(id)sender
{
    selectPickerController *dataPicker=[[selectPickerController alloc] initWithTitle:@"" message:@"" delegate:self cancelButtonTitle:@"Отмена" otherButtonTitles:@"Сохранить", nil];
    NSError *err;
    NSFetchRequest *fetch = [[NSFetchRequest alloc] initWithEntityName:@"Authors"];
    dataPicker.data = [self.context executeFetchRequest:fetch error:&err];
    [dataPicker show];

}

-(IBAction)alertDatePicker:(id)sender
{
    datePickerALertControllerViewController *pickerAlertView = [[datePickerALertControllerViewController alloc] initWithTitle:@" " message:@" " delegate:self cancelButtonTitle:@"Отмена" otherButtonTitles:@"Сохранить", nil];
    pickerAlertView.datePickerView.date=[self stringToDate:createDate.text];
    [pickerAlertView show];
}

#pragma mark UIAlertViewDelegate 
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    NSLog(@"qwe");
    //NSLog(@"%@",alertView.datePickerView.date);
    //createDate.text =[self dateToString:alertView.datePickerView.date];
    //NSLog(@"date %@...%@",date,alertView.datePickerView.date);
}

但是xCode说UIAlertView没有prorepty“datePickerView” - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 但是如果指定了来自的类对象,那么来自另一个类的对象的属性也会出现类似的问题。

如何为UIAlertView创建不同的处理程序,或者可以确定哪种类型的对象称为此方法,并根据它来使用不同的算法?

提前感谢您的帮助和建议。

1 个答案:

答案 0 :(得分:1)

您需要向每个tag添加UIAlertView,以便在调用委托方法时区分它们。请参阅my answer here

另一种方法是检查代理人的alertView是否等于您的UIAlertView个控件之一:

if ([alertView isEqual:myAlertView]) { ... }