如何确定UIViewController是否已被调用为ModalDialog?

时间:2011-03-09 20:53:00

标签: cocoa-touch uiviewcontroller modal-dialog

在我的应用程序中,我可以在两种模式下调用UIViewControle:Push和ModalDialog。

一旦UIViewController处于活动状态,如何将其称为Push或Modal对话框,我如何确定?

4 个答案:

答案 0 :(得分:6)

您可以像这样检查父视图控制器的modalViewController属性:

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

请记住在推送/显示视图后检查它。

答案 1 :(得分:5)

这对我有用:

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

    }else{


    }

答案 2 :(得分:2)

如果您还没有想到这一点,我会分享我的情况以及我是如何检测我是否处于模态视图控制器中。

我有一个segue,它以模态方式呈现视图控制器。此视图控制器嵌入在navigationController中,因此我继承了所有良好的UIBarButtonItem功能。

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

希望这有帮助

答案 3 :(得分:0)

事情是viewController可能不会自己呈现,但包含它的集合视图控制器是。也许更一般的案例对某些人有用:

- (BOOL)isModal {

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