Swift - 判断指定 ViewController是否显示

// 获取当前显示的ViewController
extension UIViewController
{
    class func currentViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController?
    {
        if let nav = base as? UINavigationController
        {
            return currentViewController(base: nav.visibleViewController)
        }
        if let tab = base as? UITabBarController
        {
            return currentViewController(base: tab.selectedViewController)
        }
        if let presented = base?.presentedViewController
        {
            return currentViewController(base: presented)
        }
        return base
    }
}

// 比较指定ViewController是否显示在屏幕上
// AnyClass 可以使用 classForCoder()获得
// JChatDetailViewController.classForCoder()

    class func isCurrentViewControllerVisible(clzz: AnyClass) -> Bool{
        let viewController = UIViewController.currentViewController()
        guard viewController != nil else {
            return false
        }
        
        if (viewController?.isMember(of: clzz))! {
            return true
        }
        
        return false
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容