1.获得当前正在显示的ViewController
-(UIViewController *)getVisibleViewController:(UIViewController *)rootViewController{
if ([rootViewController isKindOfClass:[UINavigationController class]]) {
return [self getVisibleViewController:[(UINavigationController *)rootViewController visibleViewController]];
}else if ([rootViewController isKindOfClass:[UITabBarController class]]){
return [(UITabBarController *)rootViewController selectedViewController];
}else if (rootViewController.presentedViewController){
//A->B A.presentedViewController = B,B.presentingViewController = A
return [self getVisibleViewController:rootViewController.presentedViewController];
}else{
return rootViewController;
}
}
2.获得当前View所在的ViewController 这里的self是 UIView
-(UIViewController*)viewController
{
UIResponder *nextResponder = self;
do
{
nextResponder = [nextResponder nextResponder];
if ([nextResponder isKindOfClass:[UIViewController class]])
return (UIViewController*)nextResponder;
} while (nextResponder != nil);
return nil;
}