[英]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.