gpt4 book ai didi

ios - 使用 SWRevealViewController 时获取顶部 UIViewController

转载 作者:行者123 更新时间:2023-12-01 15:58:53 24 4
gpt4 key购买 nike

我的项目使用SWRevealViewController带有标签栏 Controller 。我使用下面的代码来获取可见的 View Controller :

- (UIViewController*) topMostController
{
return [self topViewControllerWithRootViewController:[UIApplication sharedApplication].keyWindow.rootViewController];
}

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

但是当我站在 MessageViewController ,或其他任何我总是得到 SWRevealViewController为顶部。请纠正我在这种情况下获取可见 View Controller 的正确方法。

最佳答案

  • 使用带有标签栏的 SWRevealController 时检查层次结构并相应地导航。

  • 它在导航 Controller 中的 SWRevealController->tabbarcontroller->navigationcontroller->lastobject。如有不同相应调整。例如,提供了具有此层次结构的代码。
    (UIViewController*) visibleViewControllerWhenUsingSWRevealController  {

    if ([swRevealController.frontViewController isKindOfClass:[UITabBarController class]]) {

    UITabBarController *tabBarController = (UITabBarController *)mainRevealController.frontViewController;

    if ([tabBarController.selectedViewController isKindOfClass:[UINavigationController class]]) {
    UINavigationController *navigationController = tabBarController.selectedViewController;
    return ( [[navigationController viewControllers] lastObject]) ;
    }
    }

    return nil;
    }

    关于ios - 使用 SWRevealViewController 时获取顶部 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34387837/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com