我用这个:
[[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
分别设置颜色?
答案 0 :(得分:0)
不要使用appearanceWhenContainedIn:
方法,它会更改类的所有实例的外观。在您的情况下,此类是UIBarButtonItem
。并且您一次又一次地使用viewWillAppear:
方法执行该操作会导致更改所有UIBarButtonItem
个对象的颜色。
这个问题可以解答你的问题:
iOS 6 appearance when contained in multiple classes
修改强>
作为一种解决方案,您可以将tintColor
属性用于精确的UIBarButtonItem
对象。
myBarButtonItem.tintColor = [UIColor blueColor];