saroj raut
saroj raut

Reputation: 884

SWRevealViewController Issue while getting currentController

I have used the following method to get the current viewController but it always returns SWRevealViewController as currentController.

I have used SWRevealViewController for handling a slide menu.

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
  }
}

Here is how I am trying to get the current controller:

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

Upvotes: 2

Views: 83

Answers (1)

Sivajee Battina
Sivajee Battina

Reputation: 4174

Try fetching current view controller like this:

   UIViewController *topController = self.window.rootViewController;
     while (topController.presentedViewController) {
     topController = topController.presentedViewController;
}

Upvotes: 1

Related Questions