在我的应用程序中,我可以在两种模式下调用UIViewControle:Push和ModalDialog。
一旦UIViewController处于活动状态,如何将其称为Push或Modal对话框,我如何确定?
答案 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]];
}