В какой-то момент я представляю UIImagePickerViewController
. После того, как он представлен, я называю функцию: UIStoryboard.topViewController()
:Как получить контроллер верхнего уровня, когда представлен UIImagePickerController?
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 = {...}
}
Как получить UIImagePickerController
из topViewController()
функция?
Вы не должны связываться с иерархией представлений 'UIImagePickerController', и нажатие другого контроллера представления в его стеке сделает это. Кроме того, поскольку это подкласс 'UINavigationController', ваш метод' topViewController' даже не вернет 'UIImagePickerController'; в лучшем случае он вернет верхний VC в стек 'UIImagePickerController'. –
о, вы правы, совершенно правы. –
Непонятно, что вы просите. Вам интересно, как получить сборщик изображений в результате функции topViewController? – Carlos