/** swift方法 在 View 中实现这个方法即可
*viewController () -> (UIViewController) 作用:根据调用这个方法的对象 来 获取他的控制器对象
*/
func viewController () -> (UIViewController){
/* 方法1.
//1.通过响应者链关系,取得此视图的下一个响应者
var next:UIResponder?
next = self.nextResponder()!
while next != nil {
//2.判断响应者对象是否是视图控制器类型
if ((next as?UIViewController) != nil) {
return (next as! UIViewController)
}else {
next = next?.nextResponder()
}
}
return UIViewController()
*/
//1.通过响应者链关系,取得此视图的下一个响应者
var next:UIResponder?
next = self.nextResponder()!
repeat {
//2.判断响应者对象是否是视图控制器类型
if ((next as?UIViewController) != nil) {
return (next as! UIViewController)
}else {
next = next?.nextResponder()
}
} while next != nil
return UIViewController()
}
/** OC中的方法 在 View 中实现这个方法即可 写一个类目(类别),在.h文件声明这个方法,在.m文件实现这个方法
*
- (UIViewController *)viewController 作用:根据调用这个方法的对象 来 获取他的控制器对象
*/
- (UIViewController *)viewController {
//通过响应者链关系,取得此视图的下一个响应者
UIResponder *next = self.nextResponder;
do {
//判断响应者对象是否是视图控制器类型
if ([next isKindOfClass:[UIViewController class]]) {
return (UIViewController *)next;
}
next = next.nextResponder;
}while(next != nil);
return nil;
}