必须为“[[UINavigationBar 外观] setBarTintColor:[UIColor darkGrayColor]];”切换视图去工作

Posted

技术标签:

【中文标题】必须为“[[UINavigationBar 外观] setBarTintColor:[UIColor darkGrayColor]];”切换视图去工作【英文标题】:Must switch views for "[[UINavigationBar appearance] setBarTintColor:[UIColor darkGrayColor]];" to work 【发布时间】:2014-03-17 09:12:09 【问题描述】:

我将按钮单击时条形颜色设置为不同,但您必须切换视图才能使以下方法生效。我不知道为什么不是。

[[UINavigationBar appearance] setBarTintColor:[UIColor darkGrayColor]];

谢谢:D

【问题讨论】:

【参考方案1】:

错误原因:

[[UINavigationBar appearance] setBarTintColor:[UIColor randomColor]]; 不起作用,因为 UIViewController 已经 初始化!!!

解决办法:

(1) UIAppearance 用户在 AppDelegate didFinishLaunch 函数中设置全局效果。

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    // Override point for customization after application launch.

    [[UINavigationBar appearance] setBarTintColor: [UIColor redColor]];
    return YES;

(2) 关于初始化的 UIViewController ,你应该使用 self.navigationController.navigationBar 设置颜色,也会对应用的生命周期产生影响。

[self.navigationController.navigationBar setBarTintColor:[UIColor randomColor]];

【讨论】:

【参考方案2】:
UINavigationBar *navBar=self.navigationController.navigationBar;
[navBar setBarTintColor:[UIColor darkGrayColor]];

试试这个

这就是我测试它的方式。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath

    UINavigationBar *navBar=self.navigationController.navigationBar;
    [navBar setBarTintColor:[UIColor darkGrayColor]];

因为我在屏幕上没有任何按钮,所以我只是更改了我的一个表委托函数。

【讨论】:

我在我的 AppDelegate 中调用它,所以不幸的是它不起作用:/ 我只是在我的一个项目上测试了这两行,它工作得很好。如果你愿意,我可以发布屏幕截图。虽然我正在使用这些在本地排队而不是委托。只是一个有两行的函数。告诉我 嗯,如果你这样称呼他们,你到底是如何称呼他们的? 你是怎么把它放在应用程序委托中的? 不要把它放在应用程序委托中,把它放在你点击按钮的视图控制器中,或者放在连接到你正在执行操作的按钮的函数中

以上是关于必须为“[[UINavigationBar 外观] setBarTintColor:[UIColor darkGrayColor]];”切换视图去工作的主要内容,如果未能解决你的问题,请参考以下文章

自定义 UINavigationBar 外观以在 CNContactPickerViewController 中显示

在iOS 11中忽略设置UINavigationBar外观

UINavigationBar 外观 setBackgroundImage 隐藏状态栏

UINavigationBar 外观刷新?

获取具有 UINavigationBar 外观的导航栏框架

更改 UINavigationBar 外观背景图像时状态栏颜色更改