SWRevealViewController Проблема при получении currentController

Я использовал следующий метод, чтобы получить текущий viewController но всегда возвращается SWRevealViewController в качестве текущего контролера.

я использовал SWRevealViewController для обработки слайд-меню.

extension UIApplication {
  class func topViewController(base: UIViewController) -> UIViewController?{
    if let nav = base as? UINavigationController {
        return topViewController(nav.visibleViewController!)
    }
    if let tab = base as? UITabBarController {
        if let selected = tab.selectedViewController {
            return topViewController(selected)
        }
    }
    if let presented = base.presentedViewController {
        return topViewController(presented)
    }
    return base
  }
}

Вот как я пытаюсь получить текущий контроллер:

 let topVC = UIApplication.topViewController(((UIApplication.sharedApplication().delegate as! AppDelegate).window?.rootViewController)!)
    print(topVC)
    if topVC!.isKindOfClass(mycontroller) == false{
        //do something
    }else{
     // do another thing
    }
}

1 ответ

Попробуйте получить текущий контроллер вида следующим образом:

   UIViewController *topController = self.window.rootViewController;
     while (topController.presentedViewController) {
     topController = topController.presentedViewController;
}
Другие вопросы по тегам