无法获取viewControllers的计数

时间:2010-12-21 21:42:55

标签: iphone uinavigationcontroller uitabbarcontroller

我正在尝试遍历我的UITabBarController管理的控制器,对于其中包含UINavigationControllers的选项卡,请查看导航堆栈中当前有多少viewControllers。不幸的是,虽然控制器声称是UINavigationControllers,并且它们的viewControllers属性看起来像是一个数组,但它并没有像我期望的那样响应“count”:

    for ( UIViewController *controller in tabBarController.viewControllers ) {
    if ( [controller isKindOfClass:[UINavigationController class]] ) {
        UINavigationController *navigationController = (UINavigationController*)controller;
        NSLog(@"Analyzing controller: %@", controller.title);
        NSLog(@"Views in hierarchy: %@", [navigationController.viewControllers count]);
    } else {
                ....
            }
    }

当我尝试将计数消息发送到navigationController.viewControllers时,我在“层次结构中的视图:”行中收到EXC_BAD_ACCESS错误。

我在这里感到困惑,并且会喜欢任何人都可以提供的任何帮助。提前谢谢!

1 个答案:

答案 0 :(得分:4)

您使用%@格式说明符打印出-count的结果,该结果返回NSUInteger%@仅适用于打印对象,因此即使您只提供一个整数,它也会期待一个对象。你必须做这样的事情:

NSLog(@"Views in hierarchy: %lu",
    (unsigned long)[navigationController.viewControllers count]);