Не могу получить количество viewControllers - PullRequest
1 голос
/ 22 декабря 2010

Я пытаюсь перебрать контроллеры, которыми управляет мой UITabBarController, и для вкладок, в которых есть UINavigationController, посмотрите, сколько 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 {
                ....
            }
    }

Я получаю сообщение об ошибке EXC_BAD_ACCESS в строке «Представления в иерархии:» при попытке отправить сообщение подсчета в navigationController.viewControllers.

Я здесь сбит с толку, и я бы хотел любую помощь, которую кто-либо может предложить. Заранее спасибо!

1 Ответ

4 голосов
/ 22 декабря 2010

Вы используете спецификатор формата %@, чтобы распечатать результат -count, который возвращает NSUInteger. %@ подходит только для распечатки объектов, поэтому он будет ожидать объекта, даже если вы предоставите ему только целое число. Вместо этого вам придется сделать что-то вроде этого:

NSLog(@"Views in hierarchy: %lu",
    (unsigned long)[navigationController.viewControllers count]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...