有没有办法检测正在呈现多少个模态视图控制器?

Posted

技术标签:

【中文标题】有没有办法检测正在呈现多少个模态视图控制器?【英文标题】:Is there a way to detect how many modal view controllers are being presented? 【发布时间】:2012-12-19 08:03:10 【问题描述】:

ios 中,提交 modalViewController 非常简单:

[self presentModalViewController:controller animated:YES];

或者:

[[[[[UIApplication sharedApplication] delegate] window] rootViewController] presentModalViewController:controller animated:YES];

modalViewController(如navigationController)内,您可以再次呈现modalViewController。否则也许挂钩presentModalViewController:animated:dismissModalViewControllerAnimated: 是个好主意?谢谢!

【问题讨论】:

目标是什么?也许如果您告诉我们知道这一点的意义,我们可以为您提供帮助。 【参考方案1】:

检查这个问题:

Is it possible to determine whether ViewController is presented as Modal?

您可以使用该代码“爬升”您的视图,直到找到不是模态视图控制器的视图。喜欢:

while (isModal)

    currentViewController = currentViewController.presentingViewController;

    ...

【讨论】:

【参考方案2】:

我想我找到了找到最顶层 viewController 的方法,这应该有助于解决这个问题:

+ (UIViewController*)getTopMostViewController 
    UIWindow * window = [UIApplication sharedApplication].keyWindow;
    UIViewController *appRootViewController = window.rootViewController;
    UIViewController *topViewController = appRootViewController;
    while (topViewController.modalViewController != nil) 
        topViewController = topViewController.modalViewController;
    
    return topViewController;

【讨论】:

以上是关于有没有办法检测正在呈现多少个模态视图控制器?的主要内容,如果未能解决你的问题,请参考以下文章

iOS在启动时呈现模态视图控制器而不使用flash

在 UITabBarController 中呈现模态视图

UIPoover 锁定背景视图

通过模态视图呈现详细视图控制器 [关闭]

仅关闭 2 个模态呈现的视图控制器中的 1 个

在当前可见之前关闭先前呈现的模态视图控制器