iOS 在View中直接用所在的ViewController对象

在平时的开发中经常会遇到在自定义的某个View中要使用ViewController对象做一些跳转处理,通常会采用Delegate 或者 block 。现在总结一个新的方法,利用事件响应链原理来获得当前View所在的ViewController。

#import <UIKit/UIKit.h>

@interface UIView (ViewController)

- (UIViewController *)viewController;

@end

#import "UIView+ViewController.h"

@implementation UIView (ViewController)


- (UIViewController *)viewController
{
    UIResponder *next = [self nextResponder];
    
    do {
        if ([next isKindOfClass:[UIViewController class]]) {
            return (UIViewController *)next;
        }
        next = [next nextResponder];
    } while (next != nil);
    return nil;
}

@end

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,221评论 30 472
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,830评论 25 709
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,295评论 1 23
  • 当我喜欢一首歌的时候我会单曲循环,同样,喜欢一个人的时候也是忠贞不二。 我很喜欢信乐团的《假如》,有一句歌词很有意...
    余遥天阅读 270评论 0 0
  • 有一种神奇的人叫「大表哥」 「你怎么抓到它的 ?」「是这样,我正拿着在路上啃着,突然看到旁边小溪里有个像一样的东西...
    岚风的叶子阅读 196评论 0 0