您的位置:首页 > 移动开发 > IOS开发

ios获取当前视图所在的viewController

2016-07-01 11:31 369 查看
有的时候,我们需要在某个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

{

    //获取当前view的superView对应的控制器

    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];就可以顺利拿到这个控制器了。

希望上面的介绍对你有帮助!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: