必须为“[[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 中显示