1

У меня есть таймер в моем делете делегата, пользователь выбирает интервал времени, необходимый для выполнения селектора этого таймера в другом viewController, который не находится на панели вкладок ; после выбора временного интервала модальный сегмент используется для загрузки первого viewController в UITabBarControllerПопытка представить UIAlertController на UITabBarController, чей вид отсутствует в иерархии окон

при прохождении временного интервала Я хочу, чтобы приложение отображало предупреждение, но оно дает мне следующее: Предупреждение: попытка представить UIAlertController на UITabBarController, вид не находится в иерархии окон!

вот код, который I'am с помощью:

let alert = UIAlertController(title: "alert", message: "test", preferredStyle: .Alert) 
self.window?.rootViewController?.presentViewController(alert, animated: true, completion: nil) 

ответ

4

Первая попытка получить видимый контроллер представления. Вы можете сделать это с помощью этого публичного расширения:

public extension UIWindow { 
    public var visibleViewController: UIViewController? { 
     return UIWindow.getVisibleViewControllerFrom(self.rootViewController) 
    } 

    public static func getVisibleViewControllerFrom(vc: UIViewController?) -> UIViewController? { 
     if let nc = vc as? UINavigationController { 
      return UIWindow.getVisibleViewControllerFrom(nc.visibleViewController) 
     } else if let tc = vc as? UITabBarController { 
      return UIWindow.getVisibleViewControllerFrom(tc.selectedViewController) 
     } else { 
      if let pvc = vc?.presentedViewController { 
       return UIWindow.getVisibleViewControllerFrom(pvc) 
      } else { 
       return vc 
      } 
     } 
    } 
} 

А затем показать оповещения контроллер в этом ВХ

+0

спасибо, он не работал – Theilya

+0

никаких проблем, приятель! – Dmitry

+0

Как насчет диспетчера uisplitview в контроллере uitabbar? – SAHM

Смежные вопросы

 Смежные вопросы