使用多个UINavigationBar视图自定义UIBarButtonItem外观

时间:2014-10-23 21:55:28

标签: ios uinavigationcontroller uitabbaritem

我用这个:

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]
 setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:
                         color ,NSForegroundColorAttributeName,
                         FONT(FONT_REGULAR, 15.0f), NSFontAttributeName,
                         nil] forState:UIControlStateNormal];

UINavigationController方法的viewWillAppear:上设置按钮的颜色。 我的应用程序有5个主要视图,每个视图UINavigationController分组在UITabBar下。

问题是,当我在UITabBar个视图之间切换时,它会发疯,它总是会将最后初始化的视图颜色应用于所有其他视图。当我使用适当的参数更改时,我检查代码是否正在运行,它对现有按钮没有任何影响。

是否有其他方法可以为不同的UINavigationController分别设置颜色?

1 个答案:

答案 0 :(得分:0)

不要使用appearanceWhenContainedIn:方法,它会更改类的所有实例的外观。在您的情况下,此类是UIBarButtonItem。并且您一次又一次地使用viewWillAppear:方法执行该操作会导致更改所有UIBarButtonItem个对象的颜色。

这个问题可以解答你的问题:

iOS 6 appearance when contained in multiple classes

修改

作为一种解决方案,您可以将tintColor属性用于精确的UIBarButtonItem对象。

myBarButtonItem.tintColor = [UIColor blueColor];