/** 获取当前的视图控制器 */
+ (DYNavigationController *)getCurrentVC
{
UIViewController *result = nil;
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows)
{
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
UIView *frontView = window.subviews.firstObject;//[[window subviews] objectAtIndex:0];
if (!frontView) {
return nil;
}
id nextResponder = [frontView nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;
if ([result isKindOfClass:[DYTabBarViewController class]]) {
DYNavigationController * currentVC = (DYNavigationController * )[(DYTabBarViewController *) result selectedViewController];
return currentVC;
}
return nil;
}
+ (UIViewController *)visibleViewController {
UIViewController *rootViewController =[[[[UIApplication sharedApplication] delegate] window] rootViewController];
return [ControllerTool getVisibleViewControllerFrom:rootViewController];
}
+ (UIViewController *)getVisibleViewControllerFrom:(UIViewController *) vc {
if ([vc isKindOfClass:[DYNavigationController class]]) {
return [ControllerTool getVisibleViewControllerFrom:[((UINavigationController *) vc) visibleViewController]];
} else if ([vc isKindOfClass:[DYTabBarViewController class]]) {
return [ControllerTool getVisibleViewControllerFrom:[((UITabBarController *) vc) selectedViewController]];
} else {
if (vc.presentedViewController) {
return [ControllerTool getVisibleViewControllerFrom:vc.presentedViewController];
} else {
return vc;
}
}
}
+ (UIViewController *)getTabbarVisableControllerWithClassName:(NSString *)className
{
UIViewController *result = nil;
UIWindow * window = [[UIApplication sharedApplication] keyWindow];
if (window.windowLevel != UIWindowLevelNormal)
{
NSArray *windows = [[UIApplication sharedApplication] windows];
for(UIWindow * tmpWin in windows)
{
if (tmpWin.windowLevel == UIWindowLevelNormal)
{
window = tmpWin;
break;
}
}
}
UIView *frontView = [[window subviews] objectAtIndex:0];
id nextResponder = [frontView nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
result = nextResponder;
else
result = window.rootViewController;
NSArray *array = ((DYTabBarViewController *)result).viewControllers;
for (DYNavigationController *controller in array) {
if ([controller.visibleViewController isKindOfClass:NSClassFromString(className)]) {
return controller.visibleViewController;
}
}
return nil;
}
获取当前的激活的 viewController
猜你喜欢
转载自blog.csdn.net/qq_27074387/article/details/80494394
今日推荐
周排行