Получить самый верхний вид контроллера под UIAlertController - PullRequest
0 голосов
/ 03 июля 2018

Я использую код ниже, чтобы найти самый верхний 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 голосов
/ 04 июля 2018

Обновлен ответ. Поскольку вы хотите найти самый верхний видимый контроллер, вы можете использовать любой из этих двух методов. Вызовите этот метод из контроллера представления, в котором вы находитесь в данный момент, передав контроллер UINavigation в качестве параметра.

func  topMostViewController(controller:UINavigationController) -> UIViewController {

    return controller.topViewController!

}

func  visibleViewController(controller:UINavigationController) -> UIViewController {

    return controller.visibleViewController!

}
...