/** 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;
}