Reputation: 884
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
Reputation: 4174
Try fetching current view controller like this:
UIViewController *topController = self.window.rootViewController;
while (topController.presentedViewController) {
topController = topController.presentedViewController;
}
Upvotes: 1