在UIAlertController下获取最顶级的视图控制器

时间:2018-07-03 14:26:27

标签: ios objective-c uiviewcontroller uialertcontroller xcode9.2

我正在使用下面的代码来查找最顶级的ViewController。如果显示警报,则上面的代码将提供UIAlertController。如何在UIAlertController下获取顶视图控制器?

+(UIViewController*)topMostViewController:(UIViewController*)rootViewController
{

    if ([rootViewController isKindOfClass:[UITabBarController class]])
    {
        UITabBarController* tabBarController = (UITabBarController*)rootViewController;
        return [self topMostViewController:tabBarController.selectedViewController];
    }
    else if ([rootViewController isKindOfClass:[UINavigationController class]])
    {
        UINavigationController* navigationController = (UINavigationController*)rootViewController;
        return [self topMostViewController:navigationController.visibleViewController];
    }
    else
    {
        return rootViewController;
    }
}

有什么主意吗?

1 个答案:

答案 0 :(得分:0)

更新了答案。由于要查找可见的最顶部视图控制器,因此可以使用这两种方法中的任何一种。通过将UINavigation控制器作为参数传递,从当前所在的视图控制器中调用此方法。

func  topMostViewController(controller:UINavigationController) -> UIViewController {

    return controller.topViewController!

}

func  visibleViewController(controller:UINavigationController) -> UIViewController {

    return controller.visibleViewController!

}