zoukankan      html  css  js  c++  java
  • 顶层ViewController的获取

    在开发的时候,为了减少耦合,将View进行拆分时,有时候会碰到ViewController上加载另一个ViewController的View。这时我们需要获取当前最上层的ViewController,在最上层的ViewController进行push,present等操作。

    import Foundation
    import UIKit
    
    extension UIApplication {
        
        static func topViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController)-> UIViewController? {
            
            if let navi = base as? UINavigationController {
                return topViewController(base:navi.visibleViewController)
            }
            
            if let tab = base as? UITabBarController {
                let moreNavigationController = tab.moreNavigationController
                
                if let top = moreNavigationController.topViewController, top.view.window != nil {
                    return topViewController(base:top)
                } else if let selected = tab.selectedViewController {
                    return topViewController(base:selected)
                }
            }
            
            if let presented = base?.presentedViewController {
                return topViewController(base:presented)
            }
            
            return base
        }
    }
    
  • 相关阅读:
    索引
    convert 时间转换
    SQL中的case when then else end用法
    SVN安装图解
    dos 命令
    阿里云服务器相关知识
    mvc知识应用
    MVC分页
    mvc系统过滤器
    .net 接口
  • 原文地址:https://www.cnblogs.com/horo/p/6792257.html
Copyright © 2011-2022 走看看