AJGetTopViewControllerTool

如何获取当前屏幕中显示的viewController?
AJGetTopViewControllerTool.swift 文件定义:

import UIKit

class AJGetTopViewControllerTool: NSObject {

    @objc class func topViewController() -> UIViewController? {
        return self.topViewControllerWithRootViewController(viewController: self.getCurrentWindow()?.rootViewController)
    }
    
    @objc class func topViewControllerWithRootViewController(viewController :UIViewController?) -> UIViewController? {
        
        if viewController == nil {
            return nil
        }
        
        if viewController?.presentedViewController != nil {
            /* 递归找最上面的viewController */
            return self.topViewControllerWithRootViewController(viewController: viewController?.presentedViewController!)
        }
        else if viewController?.isKind(of: UITabBarController.self) == true {
            return self.topViewControllerWithRootViewController(viewController: (viewController as! UITabBarController).selectedViewController)
        }
        else if viewController?.isKind(of: UINavigationController.self) == true {
            return self.topViewControllerWithRootViewController(viewController: (viewController as! UINavigationController).visibleViewController)
        }
        else {
            return viewController
        }
        
    }
    
    // 找到当前显示的window
    class func getCurrentWindow() -> UIWindow? {
        // 找到当前显示的UIWindow
        var window: UIWindow? = UIApplication.shared.keyWindow
        /**
         window有一个属性:windowLevel
         当 windowLevel == UIWindowLevelNormal 的时候,表示这个window是当前屏幕正在显示的window
         */
        if window?.windowLevel != UIWindowLevelNormal {
            for tempWindow in UIApplication.shared.windows {
                if tempWindow.windowLevel == UIWindowLevelNormal {
                    window = tempWindow
                    break
                }
            }
        }
        return window
    }

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,484评论 4 61
  • 暑假去天津,遇到了一位老大爷。他让我充分感受到了天津人的热心肠。 那天早晨,我颠簸了一夜,疲惫不堪地以天津火车站出...
    一切来得及阅读 2,383评论 0 3
  • 1: 《让目光柔下来》 徙迁的蚂蚁部落 在村东头,安营扎寨 树下纳凉的老人们 摇着破旧大葵扇 ...
    一泓夜雨阅读 2,350评论 0 5
  • 我幸福吗?我经常会自己问自己。不幸福,我经常会这么回答,那我怎样才能幸福?于是脑海里思绪万千。 刚毕业时没有...
    拔云見日阅读 2,187评论 0 0
  • 我希望有一辆越野车 很破很旧不知道经过几手 吉他在后备箱随着车轮起伏 一束干花在后座上静静地躺着 我坐在副驾驶上 ...
    pion_阅读 1,571评论 0 1

友情链接更多精彩内容