iOS 12 / Xcode 10中的topViewController

时间:2018-09-18 16:12:26

标签: xcode10 ios12 swift4.2

所以,我今天已经更新到Xcode 10和iOS 12,现在当我从UINavigationController调用topViewController时收到以下错误消息:

  

模糊使用“ topViewController”

if let myVC = navigationController.topViewController as? MyViewController {}

即使以下代码可以正常工作。

if let myVC = navigationController.visibleViewController as? MyViewController {}

有人知道iOS 12中对此有何变化吗?

1 个答案:

答案 0 :(得分:1)

我可以建议您使用此功能,以获取topViewContoller作为扩展。如您所料,易于使用。

extension UIApplication {
    class func topViewController(controller: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
        if let navigationController = controller as? UINavigationController {
            return topViewController(controller: navigationController.visibleViewController)
        }
        if let tabController = controller as? UITabBarController {
            if let selected = tabController.selectedViewController {
                return topViewController(controller: selected)
            }
        }
        if let presented = controller?.presentedViewController {
            return topViewController(controller: presented)
        }
        return controller
    }
}

用法:

UIApplication.topViewController()