Как определить, был ли UIViewController вызван как ModalDialog? - PullRequest
6 голосов
/ 09 марта 2011

В моем приложении я могу вызвать UIViewControle в обоих режимах: Push и ModalDialog.

Как я могу определить, когда UIViewController активен, если он был вызван как Push или Modal Dialog?

Ответы [ 4 ]

6 голосов
/ 08 апреля 2011

Вы можете проверить modalViewController свойство родительского контроллера представления следующим образом:

if ([self.parentViewController.modalViewController isEqual:self]) {
    NSLog(@"Modal");
} else {
    NSLog(@"Push");
}

Просто не забудьте проверить его после того, как представление было передано / представлено.

5 голосов
/ 07 мая 2014

Это работает для меня:

   if(self.presentingViewController){
        //modal view controller 

    }else{


    }
2 голосов
/ 17 марта 2012

Если вы еще не поняли этого, я поделюсь своей ситуацией и тем, как я обнаружил, нахожусь ли я в контроллере модального представления.

У меня есть переход, который представляет контроллер представления модально. Этот контроллер представления встроен в navigationController, так что я унаследовал все хорошие возможности UIBarButtonItem.

if ([self.parentViewController.presentingViewController.modalViewController isEqual:self.parentViewController]) {
   NSLog(@"I'm in a modal view controller!");
}

Надеюсь, это поможет

0 голосов
/ 26 мая 2016

Дело в том, что viewController может быть представлен не сам, но контроллер представления коллекции, который его содержит.Может быть, кому-то будет полезен более общий случай:

- (BOOL)isModal {

    return self.presentingViewController.presentedViewController == self
    || (self.navigationController != nil && self.navigationController.presentingViewController.presentedViewController == self.navigationController)
    || [self.tabBarController.presentingViewController isKindOfClass:[UITabBarController class]]; 
}
...