在平時的開發(fā)中經(jīng)常會遇到在自定義的某個View中要使用ViewController對象做一些跳轉(zhuǎn)處理,通常會采用Delegate 或者 block 。現(xiàn)在總結(jié)一個新的方法,利用事件響應(yīng)鏈原理來獲得當(dāng)前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