从View Controller返回后,UINavigationBar titleTextAttributes未更新

时间:2018-04-26 08:31:59

标签: ios uinavigationcontroller uinavigationbar

我使用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时,当我按下第二个VC时,标题颜色被正确处理。这里的问题是,当我从第二视图控制器弹出到第一视图控制器时,即使正确调用viewWillAppear,标题仍然是黑色,如果我打印self.navigationController.navigationBar.titleTextAttributes,则值似乎更新({ {1}}是白色的。

1 个答案:

答案 0 :(得分:3)

也许是因为推/弹过渡动画,值没有反映出来。试着这样调用它。

- (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]
        };
    });
}