// // UIViewController+Utils.m // LightWallPaper // // Created by yuebin on 17/2/11. // Copyright © 2017年 adesk. All rights reserved. // #import "UIViewController+CurViewController.h" @implementation UIViewController (CurViewController) + (UIViewController*) currentViewController { // Find best view controller UIViewController* viewController = [UIApplication sharedApplication].keyWindow.rootViewController; return [UIViewController findBestViewController:viewController]; } #pragma mark - 内部方法 + (UIViewController *) findBestViewController:(UIViewController*)vc { if (vc.presentedViewController) { // Return presented view controller return [UIViewController findBestViewController:vc.presentedViewController]; } else if ([vc isKindOfClass:[UISplitViewController class]]) { // Return right hand side UISplitViewController* svc = (UISplitViewController*) vc; if (svc.viewControllers.count > 0) return [UIViewController findBestViewController:svc.viewControllers.lastObject]; else return vc; } else if ([vc isKindOfClass:[UINavigationController class]]) { // Return top view UINavigationController* svc = (UINavigationController*) vc; if (svc.viewControllers.count > 0) return [UIViewController findBestViewController:svc.topViewController]; else return vc; } else if ([vc isKindOfClass:[UITabBarController class]]) { // Return visible view UITabBarController* svc = (UITabBarController*) vc; if (svc.viewControllers.count > 0) return [UIViewController findBestViewController:svc.selectedViewController]; else return vc; } else { // Unknown view controller type, return last child view controller return vc; } } @end