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



在iOS中,呈现modalViewController非常简单:

[self presentModalViewController:controller animated:YES];

或:

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

modalViewController(如 navigationController)内,您可以再次显示modalViewController。有没有办法检测呈现了多少个模态视图控制器?否则,也许钩住presentModalViewController:animated:dismissModalViewControllerAnimated:是个好主意?谢谢!

检查这个问题:

是否可以确定视图控制器是否显示为模态?

您可以使用该代码"爬上"视图,直到找到不是模式视图控制器的视图。喜欢:

while (isModal)
{
    currentViewController = currentViewController.presentingViewController;
    ...
}

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

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

}

最新更新