iPhone: проблема чтения значков с uitabbaritem - PullRequest
2 голосов
/ 27 февраля 2010

Я пытаюсь программно выяснить, есть ли значок в панели вкладок в моем приложении.

Пока я отлаживаю, визуально я ясно вижу, что это так. Но когда я запускаю этот код в рассматриваемом viewController:

UITabBarItem* thisVCsTabBarItem = self.tabBarItem;
NSString* badgeValue = thisVCsTabBarItem.badgeValue;

... badgeValue равно нулю. И когда я проверяю thisVCsTabBarItem в отладчике, его член _badgeValue равен nil.

Что здесь происходит? Должен ли я делать что-то иначе, пытаясь прочитать это значение из элемента панели вкладок?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2010

Глядя на некоторый код, где я использую свойство UITabBarItem badgeValue, я вижу, что self.tabBarItem.badgeValue возвращает nil, а self.navigationController.tabBarItem.badgeValue возвращает правильное значение. Может ли это быть?

Дело в том, что автозаполнение фактически дает мне tabBarItem после self. Из-за этого легко ошибиться.

1 голос
/ 27 февраля 2010

Я делаю что-то подобное для вкладки Загрузки:

for (UITabBarItem* item in self.tabBarController.tabBar.items) {
    if (item.tag == 3) {
        if (downloadCount > 0) {
            item.badgeValue = [NSString stringWithFormat: @"%d", downloadCount];
        } else {
            item.badgeValue = nil;
        }
    }
}

Я не думаю, что вы должны иметь прямой доступ к tabBarItem. Лучше найти ваш предмет в массиве предметов tabBarController.

...