有时我会显示 UIImagePickerViewController
。呈现后,我调用我的函数:UIStoryboard.topViewController()
:
extension UIStoryboard {
class func topViewController(base: UIViewController? = UIApplication.sharedApplication().keyWindow?.rootViewController) -> UIViewController? {
if let nav = base as? UINavigationController {
return topViewController(nav.visibleViewController)
}
if let svc = base as? UISplitViewController where svc.viewControllers.count == 1 {
return topViewController(svc.viewControllers[0])
}
if let presented = base?.presentedViewController {
return topViewController(presented)
}
return base
}
}
当我打印结果时,我得到的是:
0x000000014cb2aa00
{
UIKit.UIResponder = {...}
}
如何从 topViewController()
函数获取 UIImagePickerController
?
最佳答案
这不是您案例的完整答案,但这是我在我的程序中找到顶级 VC 的方法。您应该能够根据您的情况对其进行编辑。
class UIHelper {
static func getCurrentViewController() -> UIViewController? {
var currentViewController: UIViewController?
if let window = UIApplication.sharedApplication().delegate?.window {
currentViewController = window!.rootViewController?.presentedViewController
}
if currentViewController == nil {
return nil
}
//Check for my version of my main tab bar VC
if let tabBarController = currentViewController as? RootTabBarController {
currentViewController = tabBarController.selectedViewController
print("Tab bar presents \(currentViewController)")
}
// Check if it's a nav VC
if let navController = currentViewController as? UINavigationController {
currentViewController = navController.viewControllers[0] as? UIViewController
print("Nav controller presents \(currentViewController)")
}
print("Current controller: \(currentViewController)")
return currentViewController
}
}
关于ios - 呈现 UIImagePickerController 时如何获取顶 View Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34368970/