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