繁体   English   中英

swift 获取 topmostViewController 避免 UIAlertController

[英]swift get topmostViewController avoid UIAlertController

我想获得 topMostVC,所以我做了这个 function:

    func topMostViewController() -> UIViewController {
        
        if let presented = self.presentedViewController {
            return presented.topMostViewController()
        }
        
        if let navigation = self as? UINavigationController {
            return navigation.visibleViewController?.topMostViewController() ?? navigation
        }
        
        if let tab = self as? UITabBarController {
            return tab.selectedViewController?.topMostViewController() ?? tab
        }
        
        return self
    }

然后使用:

AppDelegate.shared.window?.rootViewController?.topMostViewController()

但我有问题是当 UIAlertController 在屏幕上显示时,它返回 UIAlertController,而不是我期望的 viewcontroller

谁能告诉我如何避免 UIAlertController,谢谢

只需添加一个条件

if let presented = self.presentedViewController,
   !(presented is UIAlertController) { // <== Here or use !presented.isKind(of: UIAlertController.self)
    return presented.topMostViewController()
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM