【发布时间】:2018-06-13 03:03:45
【问题描述】:
我正在实现这个方法,但它总是返回我的 rootviewcontroller,而不是当前的可见控制器,我怎样才能找到一个可见的控制器。我也关注这个链接。 iPhone -- How to find topmost view controller。但同样的问题呢。
+ (UIViewController *)visibleViewController:(UIViewController *)rootViewController
{
if (rootViewController.presentedViewController == nil)
{
return rootViewController;
}
if ([rootViewController.presentedViewController isKindOfClass:[UINavigationController class]])
{
UINavigationController *navigationController = (UINavigationController *)rootViewController.presentedViewController;
UIViewController *lastViewController = [[navigationController viewControllers] lastObject];
return [self visibleViewController:lastViewController];
}
if ([rootViewController.presentedViewController isKindOfClass:[UITabBarController class]])
{
UITabBarController *tabBarController = (UITabBarController *)rootViewController.presentedViewController;
UIViewController *selectedViewController = tabBarController.selectedViewController;
return [self visibleViewController:selectedViewController];
}
UIViewController *presentedViewController = (UIViewController *)rootViewController.presentedViewController;
return [self visibleViewController:presentedViewController];
}
【问题讨论】:
标签: ios objective-c iphone uiviewcontroller