Текущая иерархия выглядит следующим образом: p>
UITabViewController
UIViewController на вкладке 1 (Панель управления)
UIViewController (вход в систему) модально отображал полноэкранный режим из информационной панели (не в навигационном контроллере) поверх всего.
Мне нужна ссылка на представленное в данный момент модальное окно, чтобы я мог выполнять с его помощью действия программно. Вот в чем мои проблемы. Кажется, я не могу получить ссылку на модальное окно. Самая глубокая ссылка, которую я могу найти, - это контроллер представления на вкладке 1.
Я пробовал
Код: Выделить всё
func getTopViewController()->UIViewController{
return topViewControllerWithRootViewController(UIApplication.sharedApplication().keyWindow!.rootViewController!)
}
func topViewControllerWithRootViewController(rootViewController:UIViewController)->UIViewController{
if rootViewController is UITabBarController{
let tabBarController = rootViewController as! UITabBarController
return topViewControllerWithRootViewController(tabBarController.selectedViewController!)
}
if rootViewController is UINavigationController{
let navBarController = rootViewController as! UINavigationController
return topViewControllerWithRootViewController(navBarController.visibleViewController)
}
if let presentedViewController = rootViewController.presentedViewController {
return topViewControllerWithRootViewController(presentedViewController)
}
return rootViewController
}
Код: Выделить всё
if let tabBarController = window?.rootViewController as? UITabBarController,
let dashboardViewController = tabBarController.selectedViewController as? AccountDashboardViewController{
print("presented controller", dashboardViewController.presentedViewController)
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... controller
Мобильная версия