ios获取当前视图所在的viewController

来源:互联网 发布:淘宝网儿童打底衫 编辑:程序博客网 时间:2024/05/16 11:57


有的时候,我们需要在某个view中获取到这个view所在的控制器,以便进行controller相关的操作,比如push到一个新的控制器,下面就介绍一下如何获取。

我们可以为UIView写一个分类,如下:

.h文件中:

#import <UIKit/UIKit.h>


@interface UIView (KFGetController)

//获取当前view所在的控制器

- (UIViewController *)viewController;


@end

.m文件中:

#import "UIView+KFGetController.h"


@implementation UIView (KFGetController)

- (UIViewController *)viewController

{

    //获取当前viewsuperView对应的控制器

    UIResponder *next = [selfnextResponder];

    do {

        if ([next isKindOfClass:[UIViewController class]]) {

            return (UIViewController *)next;

        }

        next = [next nextResponder];

    } while (next != nil);

    return nil;

    

}

@end


写完这个分类之后,就可以在需要获取控制器view中调用
UIViewController *controller = [self viewController]; 得到的这个controller就是当前view所在的控制器。

如果是在某个自定义view中,而这个view会被添加到某个viewController的view中,此时需要在这个自定义view的

- (void)willMoveToSuperview:(UIView *)newSuperview

在这个方法中调用[newSuperView viewController];就可以顺利拿到这个控制器了。



希望上面的介绍对你有帮助!

1 0