如何在使用storyboard时从app delegate获取可见的viewController? [英] How to get visible viewController from app delegate when using storyboard?

查看:139
本文介绍了如何在使用storyboard时从app delegate获取可见的viewController?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些 viewControllers ,我不使用 NavigationController
如何在app委托方法中获得可见的视图控制器(例如 applicationWillResignActive )?

I have some viewControllers, and I don't use NavigationController. How can I get visible view controller in app delegate methods (e.g. applicationWillResignActive)?

我知道如何从 NSNotification 中做到这一点,但我认为这是错误的方式。

I know how to do it from NSNotification, but I think it's the wrong way.

推荐答案

这应该适合你:

- (void)applicationWillResignActive:(UIApplication *)application
{
    UIViewController *vc = [self visibleViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}

- (UIViewController *)visibleViewController:(UIViewController *)rootViewController
{
    if (rootViewController.presentedViewController == nil)
    {
        return rootViewController;
    }
    if ([rootViewController.presentedViewController isKindOfClass:[UINavigationController class]])
    {
        UINavigationController *navigationController = (UINavigationController *)rootViewController.presentedViewController;
        UIViewController *lastViewController = [[navigationController viewControllers] lastObject];

        return [self visibleViewController:lastViewController];
    }
    if ([rootViewController.presentedViewController isKindOfClass:[UITabBarController class]])
    {
        UITabBarController *tabBarController = (UITabBarController *)rootViewController.presentedViewController;
        UIViewController *selectedViewController = tabBarController.selectedViewController;

        return [self visibleViewController:selectedViewController];
    }

    UIViewController *presentedViewController = (UIViewController *)rootViewController.presentedViewController;

    return [self visibleViewController:presentedViewController];
}

这篇关于如何在使用storyboard时从app delegate获取可见的viewController?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆