一般来说,我们可以知道一个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*)parentViewController visibleViewController];
}
return parentViewController;
}
http://stackoverflow.com/questions/1340434/get-to-uiviewcontroller-from-uiview-on-iphone
搜索关键词:find view controller from view
本文介绍了如何在iOS开发中找到一个view所对应的viewController。通常我们能获取到viewController的view或者其子视图,但要获取view所在页面的viewController,可以参考StackOverflow上的解决方案,这些方法包括但不限于使用delegate和特定的查找技巧。

4820

被折叠的 条评论
为什么被折叠?



