UINavigationBar tintColor не всегда распространяется на объекты UIBarButtonItem - PullRequest
0 голосов
/ 09 августа 2009

Привет! Я установил свой ** UINavigationBar '** s barStyle на UIBarStyleBlack , а tintColor на цвет (отличный от черного, чтобы получить цвет / градиент идет). Это хорошо работает.

Теперь ... допустим, я помещаю новый контроллер вида в стек контроллеров навигации. В этом конкретном ВК я хочу, чтобы панель навигации стала черной, но только внутри этого ВК.

Итак, в новом VC viewWillAppear: я установил tintColor навигационной панели на ноль (или [UIColor blackColor] - любой из них работает) , В viewWillDisappear: я меняю tintColor обратно на то, что было изначально. Опять все хорошо.

Пока я не вернусь в новый ВК второй (или дополнительный) раз. Если я это сделаю, навигационная панель снова станет черной, но НЕ левая кнопка панели! Вместо этого он сохраняет исходный цвет от родительского ВК!

Я рассмотрел весь пример кода (даже библиотеку Джо Хьюитта Three20, которая, похоже, делает то же самое, что и моя для своего контроллера / браузера Photo). Насколько я могу судить, я делаю все правильно, но я озадачен тем, почему элемент панели кнопок не меняется на черный для всех, кроме первого входа в мой новый ВК.

Подсказки приветствуются / приветствуются!

Ответы [ 3 ]

0 голосов
/ 19 сентября 2009

Попробуйте добавить в PARENT view controller:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIBarButtonItem *backButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Back", @"") style:UIBarButtonItemStylePlain target:nil action:nil];
    [self.navigationItem setBackBarButtonItem:backButton];
    [backButton release];
}
0 голосов
/ 01 июня 2010
    for (UIView *view in self.navigationController.navigationBar.subviews)
    {
        [view setNeedsDisplay];
    }

Надеюсь, это поможет.

0 голосов
/ 11 августа 2009

Из того, что я слышал, это известная ошибка 3.0.

...