- (UIViewController*)viewController { for (UIView* next = [self superview]; next; next = next.superview) { UIResponder* nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[UIViewController class]]) { return (UIViewController*)nextResponder; } } return nil; }
接着还可以变形为:
- (MyTableViewCell *)findMyCell:(UIGestureRecognizer *)button { for (UIView *next = [button.view superview]; next; next = next.superview) { UIResponder *nextResponder = [next nextResponder]; if ([nextResponder isKindOfClass:[MyTableViewCell class]]) { return (MyTableViewCell *)nextResponder; } } return nil; }