如何确保从其他 childviewcontroller 返回 UITabBarController 时 StateSelected 的 textcolor 始终保持相同的颜色?

How can we ensure that the textcolor always remain the same color for StateSelected when back to UITabBarController from other childviewcontroller?

提问人:Senthelazy 提问时间:3/5/2023 更新时间:3/5/2023 访问量:9

问:

我有一个带有五个子视图控制器的 UITabBarController,即 firstVC、secondVC 等。未选定项的文本颜色设置为灰色,所选项的文本颜色设置为橙色。一切正常,除非应用从 firstVC、secondVC 等导航到子视图控制器,然后导航回 UITabBarController。此时,所有选定的项目颜色在单击时将重置为蓝色,这是默认颜色。

+(void)initialize {
    NSMutableDictionary *dicNormal = [NSMutableDictionary dictionary];
    dicNormal[NSFontAttributeName] = [UIFont systemFontOfSize:12];
    dicNormal[NSForegroundColorAttributeName] =DES_COLOR;
    NSMutableDictionary *dicSelected = [NSMutableDictionary dictionary];
    dicSelected[NSFontAttributeName] = [UIFont systemFontOfSize:12];
    dicSelected[NSForegroundColorAttributeName]=ORANGE_COLOR;
    UITabBarItem *item = [UITabBarItem appearance];
    [item setTitleTextAttributes:dicNormal forState:UIControlStateNormal];
    [item setTitleTextAttributes:dicSelected forState:UIControlStateSelected];
    UITabBar *bar = [UITabBar appearance];
    [bar setBackgroundColor:WHITE_COLOR];
    [bar setBackgroundImage:[[UIImage alloc]init]];
    [bar setShadowImage:[[UIImage alloc]init]];
}

用于设置文本属性的代码位于 UITabBarController 中,并在 initialize 方法中执行。我尝试将相同的代码放在 UITabBarController 的每个子视图控制器的 viewWillAppear 方法中。但是,如果在推送到另一个视图控制器之前选择了子视图控制器,则文本颜色将保持为蓝色,而对于未选择的项目,文本颜色将更改为橙色,这是所需的颜色。

我的问题是:当从其他子视图控制器导航回 UITabBarController 时,我们如何确保 UIControlStateSelected 的文本颜色始终保持相同的颜色?提前致谢。

Objective-C UIDuageController UITtabBarController 已选择 UITabBarAppearance

评论


答: 暂无答案