获取所有加载的uiviewcontroller



我想打印一个列表的所有应用程序的视图控制器加载为了理解为什么我得到一个白屏和一般调试的目的。

请建议,谢谢,Asaf

你可以做一些递归输出像这样(我知道这不是完美的,但这是一个开始):

static void printViewControllerRecursively(UIViewController *viewController, NSUInteger level)
{
    NSMutableString *spaces = [NSMutableString stringWithCapacity:level * 3];
    for (NSUInteger i = 0; i < level; ++i)
    {
        [spaces appendString:@"   "];
    }
    NSLog(@"%@->%@", spaces, viewController);
    if ([viewController isKindOfClass:[UITabBarController class]])
    {
        for (UIViewController *child in [(UITabBarController *)viewController viewControllers])
        {
            printViewControllerRecursively(child, level + 1);
        }
    }
    else if ([viewController isKindOfClass:[UINavigationController class]])
    {
        for (UIViewController *child in [(UINavigationController *)viewController viewControllers])
        {
            printViewControllerRecursively(child, ++level);
        }
    }
}

那么就调用printViewControllerRecursively([UIApplication sharedApplication].keyWindow.rootViewController, 0);

这似乎不是一个尝试和调试任何东西的好方法,但也就是说,您可以使用:

NSLog(@"%@", [self.navigationController viewControllers]);

NSLog(@"%@", [self.tabBarController viewControllers]);

等等……

我猜这取决于你如何设置你的应用。

相关内容

  • 没有找到相关文章

最新更新