iOS-获取当前View所在的控制器

在做轮播图的时候,有点轮播图展示的是广告,有的是活动,等等还有其他的

当前点击某个轮播的时候要跳转到不同的控制器,点击事件是在控制器写的,为了避免控制器代码过多,显示的臃肿

我创建了一个UIWindow的分类,暂且叫Model (GetCurrentVC)

谷歌还有很多方法,我这个方法亲测有效,其他方法后续再测试

一:

@interface UIWindow (GetCurrentVC)

- (UIViewController *)getCurrentVC;

@end

二:


#import "UIWindow+GetCurrentVC.h"


@implementation UIWindow (GetCurrentVC)


-  (UIViewController *)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] objectAtIndex:0];

    id nextResponder = [frontView nextResponder];

    

    if ([nextResponder isKindOfClass:[UIViewController class]])

        result = nextResponder;

    else

        result = window.rootViewController;

    

    return result;

}



@end






你可能感兴趣的:(iOS)