How to get visible viewController from app delegate when using storyboard?

后端 未结 14 1691
小蘑菇
小蘑菇 2020-12-05 00:14

I have some viewControllers, and I don\'t use NavigationController. How can I get visible view controller in app delegate methods (e.g. appli

14条回答
  •  旧时难觅i
    2020-12-05 01:05

    modified from troop231

    + (UIViewController *)visibleViewController:(UIViewController *)rootViewController
    {
        if ([rootViewController isKindOfClass:[UINavigationController class]])
        {
            UINavigationController *navigationController = (UINavigationController *)rootViewController;
            UIViewController *lastViewController = [[navigationController viewControllers] lastObject];
    
            return [self visibleViewController:lastViewController];
        }
        if ([rootViewController isKindOfClass:[UITabBarController class]])
        {
            UITabBarController *tabBarController = (UITabBarController *)rootViewController;
            UIViewController *selectedViewController = tabBarController.selectedViewController;
    
            return [self visibleViewController:selectedViewController];
        }
    
        if (rootViewController.presentedViewController != nil)
        {
            UIViewController *presentedViewController = (UIViewController *)rootViewController.presentedViewController;
            return [self visibleViewController:presentedViewController];
        }
    
        return rootViewController;
    }
    

提交回复
热议问题