Отдельные обработчики событий для разных UIAlerts в цели c - PullRequest
2 голосов
/ 13 сентября 2011
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"title" message:@"szMsg" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:@"download"];
    [alert show];
    [alert release];

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
        if (buttonIndex == 0)
        {
            //Code for OK button
        }
        if (buttonIndex == 1)
        {
            //Code for download button
        }
    }

хорошо, скажем, у меня есть 2 uialerts и делегат, установленный на self в обоих случаях, и первый uialert содержит кнопки (ok & download), второй содержит кнопки (cancel & upload), теперь нам нужны отдельные обработчики событий, знаете?

Ответы [ 4 ]

12 голосов
/ 13 сентября 2011

Чтобы обрабатывать несколько UIAlertView в UIView, вы должны установить уникальный тег для каждого.

    alert.tag = 123;

И пока вы получаете ответ от метода делегата, управляйте каждым из них уникальным тегом.

    - (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
    {
        if(alertView.tag == 123)
        {
            if (buttonIndex == 0)
            {
                //Code for OK button
            }
            else if (buttonIndex == 1)
            {
                //Code for download button
            }
       }
       else if(alertView.tag == 456)
       {
            // code to manage another alertview response.
       }
    }
4 голосов
/ 13 сентября 2011

Попробуйте установить свойство tag для двух разных экземпляров UIAlertView, затем снова проверьте эти теги в обратном вызове и сделайте все остальное, например:

UIAlertView *alertDownload = [[UIAlertView alloc]initWithTitle:@"title" message:@"szMsg" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:@"download"];
    alertDownload.tag = 1;
    [alertDownload show];
    [alertDownload release];


UIAlertView *alertUpload = [[UIAlertView alloc]initWithTitle:@"title" message:@"szMsg" delegate:self cancelButtonTitle:@"cancel" otherButtonTitles:@"upload"];
    alertUpload.tag = 2;
    [alertUpload show];
    [alertUpload release];

А вот делегат CallBack,

-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
     if(alertView.tag == 1) {
          //Here you do your stuff for Download
     }
     if(alertView.tag == 2) {
         //Here you do stuff for Upload
     }
}
1 голос
/ 13 сентября 2011
               my_Alert = [[UIAlertView alloc]initWithTitle:@"Hi" message:@"Hello" delegate:self
                cancelButtonTitle:@"OK" otherButtonTitles:@"Cancel",nil];
             my_Alert.frame = CGRectMake(462, 359, 400, 50);

             my_Alert.tag = 1;

               my_Alert = [[UIAlertView alloc]initWithTitle:@"Hi" message:@"Hello" delegate:self
                cancelButtonTitle:@"OK" otherButtonTitles:@"Cancel",nil];
             my_Alert.frame = CGRectMake(462, 359, 400, 50);

                              my_Alert.tag = 2;

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

   if (buttonIndex==0 && my_Alert.tag == 1)
    {   

      NSLog(@"Perform action on button touch of index 0 of First Alert");
    }
      else
       {
             NSLog(@"Perform action on button touch of index 1 of First Alert");
       }

    if (buttonIndex==0 && my_Alert.tag == 2)
   {  
   NSLog(@"Perform action on button touch of index 0 of Second Alert");         
   }
           else
       {
             NSLog(@"Perform action on button touch of index 1 of Second Alert");
       }
  }
0 голосов
/ 13 сентября 2011

Если у вас много представлений предупреждений или методы делегатов сложны, вы можете создать контроллеры (простой подкласс NSObject) для управления каждым представлением предупреждений, например, DownloadConfirmationAlertController. Ваш главный контроллер может затем сохранить ссылку на субконтроллеры.

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