尽管通过UIView获得UIViewController操作时,或许会与MVC的原则背道而驰,但这样做是可以提高开发效率的,所以建议可以用但尽量少用。
UIView获得UIViewController的方法:
UIViewController* vc = [UIViewController alloc] init;
for (UIView* next = [self superview]; next; next = next.superview) {
UIResponder* nextResponder = [next nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
vc = (UIViewController*)nextResponder;
}
也可改写成UIView的一个分类放进去备用:
#import <UIKit/UIKit.h>
@interface UIView (Extend)