swift獲取Controller或者View的方法

遞歸獲取當前view中某個view

        /// 獲取lineView
        ///
        /// - Parameter view: 父view
        /// - Returns: wantView
        func findSubView (view: UIView){
            for subview in view.subviews {
                if subview.tag == 999 {//此處以tag對某個view標識
                }
                findSubView(view: subview)
            }
        }
        
        DispatchQueue.mainAsync {
            findSubView(view: alert)
        }

獲取window中最頂層控制器

    //獲取當前頁面的最頂層控制器
   func currentVc() -> UIViewController {
        let keywindow = UIApplication.shared.keyWindow
        let firstView: UIView = (keywindow?.subviews.first)!
        let secondView: UIView = firstView.subviews.first!
        let vc = viewForController(view: secondView)
        return vc!
    }

    func viewForController(view:UIView)->UIViewController?{
        var next:UIView? = view
        repeat{
            if let nextResponder = next?.next, nextResponder is UIViewController {
                return (nextResponder as! UIViewController)
            }
            next = next?.superview
        }while next != nil
        return nil
    }
    

調(diào)用方式:

    let vc = self.currentVc()//獲取當前屏幕中頂層控制器
    if vc.childViewControllers.first is ManagerRootViewController {
         self.perform(#selector(ManagerRootViewController.disAction), on: Thread.main, with: nil, waitUntilDone: true)
    }//如果是UINavgitionController,那么其first就是rootViewController

Perform的使用:

    在A控制器想讓B控制器調(diào)用B中xx的方法,perform的用法
    onThread:執(zhí)行xx方法的線程
    waitUntilDone:true代表先執(zhí)行xx方法再執(zhí)行一下代碼.
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,545評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,001評論 25 709
  • 最近買了簡書的短篇小說合集《世界與它的悲歡》,分為人、情、事三部分,看完后決定把“事”里一篇與網(wǎng)絡暴力有關(guān)的文章單...
    青悠_閱讀 304評論 0 1
  • 大家好,我叫劉備,小名備備。我是從遙遠的三國時代穿越過來的,今天要給大家講述的是我的成功之道。 大家都知道,我是中...
    deity0808閱讀 913評論 0 0
  • 一、內(nèi)存管理RAM:運行時內(nèi)存ROM:存儲空間管理內(nèi)存的原因:如果程序運行過程中不斷地創(chuàng)建對象,而不去管理對象的釋...
    AsaGuo閱讀 276評論 0 0

友情鏈接更多精彩內(nèi)容