zoukankan      html  css  js  c++  java
  • 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;
    }
    

      

  • 相关阅读:
    就业指导【黄春霞】
    百度面试题
    面试题08-多线程网络
    面试题07-内存管理
    面试题06-Foundation
    面试题05-UI控件
    面试题04-应用程序
    面试题03-第三方框架
    面试题02-客户端安全性和框架设计
    面试题01-数据存储
  • 原文地址:https://www.cnblogs.com/howlaa/p/13627116.html
Copyright © 2011-2022 走看看