ios - 呈现 UIImagePickerController 时如何获取顶 View Controller ?

标签 ios swift uistoryboard viewcontroller

有时我会显示 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/

相关文章:

ios - 如何不断检查变量的值?

swift - UICollectionView 必须使用非零布局参数初始化(UICollectionViewController StoryBoard)

swift - 具有 3 列的 UICollectionView 不会产生所需的结果

delegates - Storyboard中的SplitView,无法连接委托(delegate)

ios - @IBDesignable UIView 不在 Storyboard中调用 init

iOS停止状态栏在动画期间消失

ios - webkit 中的 CSS 最大高度过渡双动画错误

ios - CollectionView 中的最后一项未对齐 - Swift

android - Android 和 IOS 是否支持亚美尼亚语和索马里语/语言环境?

后台模式下的 iOS BLE 外设/广告数据