IOS获取当前所在的ViewController
这个主要用于给别人提供的API中,有关跳转的地方。在IOS中,跳转必须提供目前所在的ViewController。代码如下:
// 获取当前显示的 UIViewController + (UIViewController *)dc_findCurrentShowingViewController { //获得当前活动窗口的根视图 UIViewController *vc = [UIApplication sharedApplication].keyWindow.rootViewController; UIViewController *currentShowingVC = [self findCurrentShowingViewControllerFrom:vc]; return currentShowingVC; } + (UIViewController *)findCurrentShowingViewControllerFrom:(UIViewController *)vc { // 递归方法 Recursive method UIViewController *currentShowingVC; if ([vc presentedViewController]) { // 当前视图是被presented出来的 UIViewController *nextRootVC = [vc presentedViewController]; currentShowingVC = [self findCurrentShowingViewControllerFrom:nextRootVC]; } else if ([vc isKindOfClass:[UITabBarController class]]) { // 根视图为UITabBarController UIViewController *nextRootVC = [(UITabBarController *)vc selectedViewController]; currentShowingVC = [self findCurrentShowingViewControllerFrom:nextRootVC]; } else if ([vc isKindOfClass:[UINavigationController class]]){ // 根视图为UINavigationController UIViewController *nextRootVC = [(UINavigationController *)vc visibleViewController]; currentShowingVC = [self findCurrentShowingViewControllerFrom:nextRootVC]; } else { // 根视图为非导航类 currentShowingVC = vc; } return currentShowingVC; }