从视图控制器返回后 UINavigationBar titleTextAttributes 未更新
UINavigationBar titleTextAttributes not updated after coming back from a View Controller
我正在使用 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
是白色的)。
可能是因为 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]
};
});
}
我正在使用 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
是白色的)。
可能是因为 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]
};
});
}