- (UIViewController*)topViewController {
return [ self topViewControllerWithRootViewController:[UIApplicationsharedApplication].keyWindow.rootViewController];
}
- (UIViewController*)topViewControllerWithRootViewController:(UIViewController*)rootViewController {
if ([rootViewController isKindOfClass:[UITabBarController クラス]]) {
UITabBarController* tabBarController = (UITabBarController*)rootViewController;
return [ self topViewControllerWithRootViewController:tabBarController.selectedViewController];
}
else if ([rootViewController isKindOfClass:[UINavigationController クラス]]) {
UINavigationController *navigationController = (UINavigationController*)rootViewController;
return [ self topViewControllerWithRootViewController:navigationController.visibleViewController];
}
else if (rootViewController.presentedViewController) {
UIViewController* presentViewController = rootViewController.presentedViewController;
return [ self topViewControllerWithRootViewController:presentedViewController];
}
それ以外の場合{
rootViewControllerを返します。
}
}