如何在使用storyboard时从app delegate获取可见的viewController? [英] How to get visible viewController from app delegate when using storyboard?
本文介绍了如何在使用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屋!
查看全文