#objective-c #xcode #ios #uialertview
#objective-c #xcode #iOS #uialertview
Вопрос:
У меня есть UIAlert
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"ok"
message:@"Canc?"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:@"Annul", nil];
[alertView show];
[alertView release];
и его метод делегирования:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if(buttonIndex == 0)//OK button pressed
{
//do something
}
else if(buttonIndex == 1)//Annul button pressed.
{
//do something
}
и все в порядке, но если у меня есть другой пример alertview «alertViewOne», я хочу, чтобы у этого alertViewOne был свой метод делегирования, и он не должен использовать метод делегирования первого alertview; как это изменит мой код?
Ответ №1:
Просто установите тег для каждого представления предупреждения и проверьте, какой из них отправил сообщение.
alertView.tag=0;
И затем
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
if(alertView.tag==0){
if(buttonIndex == 0)//OK button pressed
{
//do something
}
else if(buttonIndex == 1)//Annul button pressed.
{
//do something
}
}else{
if(buttonIndex == 0)//OK button pressed
{
//do something
}
else if(buttonIndex == 1)//Annul button pressed.
{
//do something
}
}
Обновить
Есть лучшее решение с использованием блоков.
Вы можете посмотреть на этот проект, например: UIAlertView-Blocks
И, насколько я знаю, iOS8 будет поставляться с собственными оповещениями с блоками.
Комментарии:
1. где я могу установить тег? В viewDidLoad?
2. при создании представления предупреждений. сразу после выделения.