ios之寻找当前控件根控制器

1.在项目过程中,难免会遇到些奇特的场景,特此根据object-c的特性寻找根控制器或者栈顶控制器。正所谓艺多不养人,技多不压身

UIView+Addition.h

#import <UIKit/UIKit.h>

@interface UIView (Addition)

//声明一下寻找跟控制器的方法
- (UIViewController *)rootViewController;

@end

UIView+Addition.m

#import "UIView+Addition.h"

@implementation UIView (Addition)

- (UIViewController *)rootViewController {
    
    //寻找下一个响应者
    UIResponder *resp = [self nextResponder];
    //循环判断是否为控制器
    while (resp) {
        //如果是则返回   下面的[UIViewController class]可以替换为你自己知道的根控制器名,意思是找到你想要的这个根控制器就停下来
        if ([resp isKindOfClass:[UIViewController class]]) {
            return (UIViewController *)resp;
        }
        //如果不是则继续寻找
        resp = [resp nextResponder];
    }
    //
    return nil;
}

@end

  

posted @ 2018-07-06 09:20  哇哈爽  阅读(549)  评论(0编辑  收藏  举报