0

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

'topViewController' 的模糊使用

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

即使下面的代码工作得很好。

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

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

4

1 回答 1

2

我可以建议你使用这个函数来获取 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()
于 2018-09-22T15:01:41.577 回答