2015-03-01 2 views
0

Есть ли способ судить, есть ли в настоящее время экземпляр UIAlertView? Потому что можно показать несколько UIAlertView на том же уровне окна.Как определить, отображается ли в настоящее время UIAlertView

if ([self isAlertViewShowing]) { 
    // do not show UIAlertView again. 
} else { 
    // show your UIAlertView. 
} 

Надежда есть такой метод, который называется isAlertViewShowing или что-то другое.

ответ

7

Метод 1 Initialize флаг по умолчанию для предупреждения ... Если предупреждение не открыт набор isAlertViewShowing, как ни один метод

Bool isAlertViewShowing; 
    isAlertViewShowing = NO; 
    if (isAlertViewShowing == NO){ 
     UIAlertView *alert =[[UIAlertView alloc]initWithTitle:@"Title" message:@"Message" delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil]; 
     [alert show]; 
     // Now set isAlertViewShowing to YES 
     isAlertViewShowing = YES; 
    } 
    else 
    { 
     //Do something 
    } 

2- Сделайте свою собственную функцию, чтобы проверить, является ли какой-либо UIAlertView является показывать или не

- (BOOL)isAlertViewShowing{ 
for (UIWindow* window in [UIApplication sharedApplication].windows) { 
    NSArray* subviews = window.subviews; 
    if ([subviews count] > 0){ 
     for (id view in subviews) { 
      if ([view isKindOfClass:[UIAlertView class]]) { 
       return YES; 
      } 
     } 
    } 
} 
return NO; 
} 

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

+0

Способ 2 также применим к UIAlertController, представленному в iOS8? – tounaobun

+0

вы можете применить это в любом представлении. Измените 'UIAlertView' в строке номер 6 с каким видом вы хотите проверить. Убедитесь, что просмотр не отображается в контроллере. –

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