[英]Get top most UIViewController if its presented modally
我已经使用vc.modalPresentationStyle =.fullScreen
模态地呈现了一个 ViewController
但是,当我尝试使用下面的代码获取最高视图 controller 时,它返回 nil。
func getTopViewController() -> UIViewController? {
var topController: UIViewController? = UIApplication.shared.keyWindow?.rootViewController
while topController?.presentedViewController != nil {
topController = topController?.presentedViewController
}
return topController
}
如果我使用vc.modalPresentationStyle =.fullScreen
呈现它, topController?.presentedViewController
将返回 nil,如果我使用默认呈现样式,它的工作正常。
有没有人遇到同样的问题,任何帮助将不胜感激。
我已经创建了这个扩展以获得最顶层的 controller
extension UIViewController {
var 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
}
}
extension UIApplication {
var topMostViewController : UIViewController? {
return self.keyWindow?.rootViewController?.topMostViewController
}
}
希望这对你有用
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.