一般来说,我们可以知道一个viewController所在的view [self view],或者它的子视图 [self subViews]。
然而,怎样知道一个view所在页面的viewController呢?
有人说可以使用delegate,在view使用的时候设置它的containerController。这是一种方法,但是需要自己设置,不够方便。
因此,笔者采用以下方法做判断。
- (UIViewController*) parentViewControllerName:(UIView*) view
{
Class vcc = [UIViewController class];
UIViewController *parentViewController = nil;
UIResponder *responder = view;
while ((responder = [responder nextResponder])){
if ([responder isKindOfClass: vcc]){
parentViewController = (UIViewController*)responder;
break;
}
}
//如果是NavigationController情况,一般要获取当前的viewController
if ([parentViewController isKindOfClass:[UINavigationController class]]) {
parentViewController = [(UINavigationController*)parentView