- (UIViewController*)topViewController {
return [ self topViewControllerWithRootViewController:[UIApplication shareApplication].keyWindow.rootViewController];
}
- (UIViewController*)topViewControllerWithRootViewController:(UIViewController*)rootViewController {
if ([rootViewController esKindOfClass:[clase UITabBarController]]) {
UITabBarController* tabBarController = (UITabBarController*)rootViewController;
return [ self topViewControllerWithRootViewController:tabBarController.selectedViewController];
}
else if ([rootViewController isKindOfClass:[clase UINavigationController]]) {
UINavigationController *navigationController = (UINavigationController*)rootViewController;
return [ self topViewControllerWithRootViewController:navigationController.visibleViewController];
}
de lo contrario si (rootViewController.presentedViewController) {
UIViewController* presentadoViewController = rootViewController.presentedViewController;
return [ self topViewControllerWithRootViewController:presentedViewController ];
}
más {
devolver rootViewController;
}
}