繁体   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