簡體   English   中英

如何獲取顯示的視圖控制器的頂視圖

[英]How do I get the top view which is a presented view controller

我有一個導航欄控制器。 經過一些操作后,我需要彈出一個新視圖,它是一個顯示的視圖控制器。 然后我如何獲得頂視圖?

我總是在導航堆棧上獲得頂視圖,但在呈現的視圖上卻沒有。 為什么?

 let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
    let aVariable = appDelegate.window
    if let topController = aVariable!.visibleViewController() {
        print(topController)
    }

嘗試

if let topController = myNavigationController.visibleViewController {
    print(topController)
}

Swift 3示例獲取頂級UIViewController來展示另一個UIViewController:

import UIKit

extension UIApplication {
    var topVC: UIViewController? {
        get {
            let rootVC = UIApplication.shared.keyWindow?.rootViewController

            if let nav = rootVC as? UINavigationController {
                return nav.visibleViewController
            } else if let tab = rootVC as? UITabBarController, let selected = tab.selectedViewController {
                return selected
            } else if let presented = rootVC?.presentedViewController {
                return presented
            }
            return rootVC
        }
    }
}

可以通過以下方式調用它:

_ = UIApplication.shared.topVC?.present(yourViewController, animated: true)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM