如何确定 UIViewController 是不是已被称为 ModalDialog?
Posted
技术标签:
【中文标题】如何确定 UIViewController 是不是已被称为 ModalDialog?【英文标题】:How to determine if a UIViewController has been called as ModalDialog?如何确定 UIViewController 是否已被称为 ModalDialog? 【发布时间】:2011-03-09 20:53:00 【问题描述】:在我的应用中,我可以在两种模式下调用 UIViewControle:Push 和 ModalDialog。
一旦 UIViewController 处于活动状态,我如何确定是被调用为 Push 还是 Modal Dialog ?
【问题讨论】:
我在这里使用了解决方案,它处理视图控制器出现在导航/选项卡控制器***.com/a/6349300中的情况 Is it possible to determine whether ViewController is presented as Modal?的可能重复 【参考方案1】:您可以像这样检查父视图控制器的modalViewController
属性:
if ([self.parentViewController.modalViewController isEqual:self])
NSLog(@"Modal");
else
NSLog(@"Push");
只记得在视图被推送/呈现后检查它。
【讨论】:
这在 ios 5+ 中不起作用,因为 UIViewController 不再为 parentViewController 回答,而是为 presentingViewController 回答。见***.com/questions/2798653/…【参考方案2】:这对我有用:
if(self.presentingViewController)
//modal view controller
else
【讨论】:
【参考方案3】:如果您还没有弄清楚这一点,我将分享我的情况以及我如何检测我是否在模态视图控制器中。
我有一个以模态方式呈现视图控制器的 segue。这个视图控制器嵌入在一个 navigationController 中,因此我继承了所有好的 UIBarButtonItem 功能。
if ([self.parentViewController.presentingViewController.modalViewController isEqual:self.parentViewController])
NSLog(@"I'm in a modal view controller!");
希望对你有帮助
【讨论】:
【参考方案4】:问题是 viewController 本身可能不会出现,但包含它的集合视图控制器是。也许更一般的情况对某人有用:
- (BOOL)isModal
return self.presentingViewController.presentedViewController == self
|| (self.navigationController != nil && self.navigationController.presentingViewController.presentedViewController == self.navigationController)
|| [self.tabBarController.presentingViewController isKindOfClass:[UITabBarController class]];
【讨论】:
以上是关于如何确定 UIViewController 是不是已被称为 ModalDialog?的主要内容,如果未能解决你的问题,请参考以下文章
如何检查当前是不是正在显示 UIViewController?
如何将 UIToolbar 添加到 UIViewController?
如何检测 iOS UIViewController 是不是被交互或触摸