UINavigationBar titleTextAttributes не обновляется после возврата из View Controller - PullRequest
0 голосов
/ 26 апреля 2018

Я использую UINavigationController для отображения некоторых контроллеров представления. Мне нужно менять цвет заголовка панели навигации каждый раз, когда я переключаюсь между двумя контроллерами представления. Вот что я делаю сейчас:

Контроллер первого вида

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

    self.navigationController.navigationBar.titleTextAttributes = 
         @{
              NSForegroundColorAttributeName: [UIColor whiteColor],
              NSFontAttributeName: [UIFont systemFontOfSize:14.0]
         };
}

Контроллер второго вида

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

    self.navigationController.navigationBar.titleTextAttributes = 
         @{
              NSForegroundColorAttributeName: [UIColor blackColor],
              NSFontAttributeName: [UIFont systemFontOfSize:14.0]
         };
}

При первой загрузке First VC и при нажатии на Second VC цвет заголовка обрабатывается правильно. Проблема здесь в том, что когда я переключаюсь со второго на первый вид контроллера, заголовок остается черным, даже если viewWillAppear вызывается правильно, и, если я печатаю self.navigationController.navigationBar.titleTextAttributes, значения, кажется, обновляются (NSForegroundColorAttributeName - белый ).

1 Ответ

0 голосов
/ 26 апреля 2018

Возможно из-за анимации перехода push / pop значения не отражаются. Попробуйте назвать это так.

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

    dispatch_async(dispatch_get_main_queue(), ^{
        self.navigationController.navigationBar.titleTextAttributes =
        @{
            NSForegroundColorAttributeName: [UIColor blackColor],
            NSFontAttributeName: [UIFont systemFontOfSize:14.0]
        };
    });
}    
...