2013-07-08 3 views
-1

У меня есть имя класса viewController, и он имеет следующий код ниже, и он отлично работает. Тем не менее, когда я вызываю чек из моего контроллера подкласса, он не работает так, как я его хочу. Появляется UIAlertView, но он не может обнаружить, когда нажата кнопка 0. Все обходные пути для этого.Alert view работает в одном классе, но не в другом

-(void)check{ 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"You Lose!" 
               message:@"Play Again?" 
               delegate:self 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:@"OK", nil]; 
    [alert show]; 

    } 

    - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex { 
      if (buttonIndex == 0) {  // and they clicked OK. 
         ViewController*myNewVC = [[ViewController alloc] init]; 
         [self presentModalViewController:myNewVC animated:NO]; 
      } 
     } 
+0

вы должны использовать пользовательский делегат для этой работы – Rajneesh071

+0

, если я не ошибаюсь, вы хотите, чтобы вызвать оповещение делегата от подкласса? – SachinVsSachin

ответ

0

Добавить UIAlertViewDelegate в вашем подклассе .h файла как сильфон ..

@interface yourSubClassViewController :UIViewController <UIAlertViewDelegate>{ 
    /// your code 

} 
@end 
+0

@MooDoo добавить 'UIAlertViewDelegate' как мой выше ответ, а затем сообщить мне .. :) –

+0

Извините, это не работает. –

+0

как вам отобразить подкласс из основного класса? означает Push или представить этот подкласс ?? –

0

Кнопка Отмена будет индекс "0", попробуйте для index==1.

Используйте этот метод:

-(void)check{ 
     UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"You Lose!" 
               message:@"Play Again?" 
               delegate:self 
             cancelButtonTitle:@"OK" 
             otherButtonTitles:@"PopUp", nil]; 
    [alert show]; 

    } 

    - (void) alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex { 
      if (buttonIndex == 0) {  
        NSLog("Cancel Button clicked); 
      } 
     else if (buttonIndex == 1) { 
      ViewController*myNewVC = [[ViewController alloc] init]; 
      [self presentModalViewController:myNewVC animated:NO]; 
     } 
+0

Пробовал это, не работает. Если я вызвал метод проверки в контроллере View, он работает. Не уверен, помогает ли эта информация. –

+0

Вы имеете в виду ** Режим проверки **.? –

+0

Извините, я его отредактировал. –

0

Не используйте кнопку отмены. Используйте две кнопки otherButtonTitles и используйте кнопки index == 1 и индекс кнопки == 2. Это может помочь.

0

Вам необходимо установить delegate в ваш подкласс.

-(void)check:(id)delegate{ 
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"You Lose!" 
              message:@"Play Again?" 
              delegate:delegate 
            cancelButtonTitle:@"OK" 
            otherButtonTitles:@"OK", nil]; 
[alert show]; 

} 

и вы называете это [self check:self];

Смежные вопросы