11.如何以通用的方法找到当前显示的ViewController
?
+ (UIViewController *)findBestViewController:(UIViewController *)vc {
if (vc.presentedViewController ) {
// Return presented view controller
return [DQControllerManager findBestViewController: vc.presentedViewController];
} else if ([vc isKindOfClass: [UISplitViewController class ]]) {
// Return right hand side
UISplitViewController *svc = (UISplitViewController *) vc;
if (svc.viewControllers .count > 0 )
return [DQControllerManager findBestViewController: svc.viewControllers.lastObject];
else
return vc;
} else if ([vc isKindOfClass: [UINavigationController class ]]) {
// Return top view
UINavigationController *svc = (UINavigationController *) vc;
if (svc.viewControllers .count > 0 )
return [DQControllerManager findBestViewController: svc.topViewController];
else
return vc;
} else if ([vc isKindOfClass: [UITabBarController class ]]) {
// Return visible view
UITabBarController *svc = (UITabBarController *) vc;
if (svc.viewControllers .count > 0 )
return [DQControllerManager findBestViewController: svc.selectedViewController];
else
return vc;
} else {
// Unknown view controller type, return last child view controller
return vc;
}
}