获取所有已加载的uiview控制器

时间:2014-05-15 15:08:11

标签: ios debugging user-interface uiviewcontroller

我想打印所有应用程序视图控制器的列表,这些视图控制器已加载,以便了解我为什么会出现白屏并进行一般调试。

请指教, 谢谢, 阿萨夫

2 个答案:

答案 0 :(得分:1)

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

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);

答案 1 :(得分:0)

这似乎不是尝试和调试anyhitng的好方法,但据说你可以使用:

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

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

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