Два представления предупреждений в одном контроллере представления - PullRequest
4 голосов
/ 20 февраля 2009

У меня есть два UIAlertView s в одном контроллере представления, и я хочу использовать метод делегата

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

Этот метод вызывается при нажатии кнопки в представлении предупреждений. Однако оба представления предупреждений будут вызывать один и тот же метод.

Как я могу отличить два вида предупреждений?

1 Ответ

8 голосов
/ 20 февраля 2009

Установите для свойства tag различные значения при отображении предупреждения. Это просто целое число, и его можно запросить в методе обратного вызова / делегата.

Вот пример (с использованием ActionSheet, а не AlertView, но принцип точно такой же):

UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Title"
                                                         delegate:self
                                                cancelButtonTitle:@"Cancel"
                                           destructiveButtonTitle:nil
                                                otherButtonTitles:@"Some option", nil];
actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
actionSheet.tag = 10;
[actionSheet showInView:self.view];
[actionSheet release];

Тогда в вашем селекторе:

-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex {
  switch (actionSheet.tag) {
    case 10:
      // do stuff
      break;
    case 20:
      // do other stuff
      break;
  }
}

Конечно, вы бы использовали константы, а не буквальные значения, локализованные строки и т. Д., Но это основная идея.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...