65 lines
1.9 KiB
Objective-C
Executable File
65 lines
1.9 KiB
Objective-C
Executable File
//
|
|
// 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
|