我是初学者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创建不同的处理程序,或者可以确定哪种类型的对象称为此方法,并根据它来使用不同的算法?
提前感谢您的帮助和建议。
答案 0 :(得分:1)
您需要向每个tag
添加UIAlertView
,以便在调用委托方法时区分它们。请参阅my answer here。
另一种方法是检查代理人的alertView
是否等于您的UIAlertView
个控件之一:
if ([alertView isEqual:myAlertView]) { ... }