开发的时候, 有时候在层级很深的view视图中有一个按钮, 需要跳转页面, 这个时候就需要获取它所在的viewController的NavigationController进行push, 使用block可能需要很多层级, 通知也可以使用, 有点大材小用.我们可以为UIView添加一个Category, 以后使用就方便了.
获取UIView对象所在的控制器,不存在返回nil
@property (nonatomic, strong, readonly)UIViewController *viewController
-(UIViewController *)viewController {
for (UIView *view = self; view; view = view.superview) {
UIResponder *nextResponder = [view nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]]) {
return (UIViewController *)nextResponder;
}
}
return nil;
}