我有一个使用情节串连板的项目,每当我按下带有segue的视图控制器时,动态创建的条形按钮项总是蓝色的.

在此处输入图像描述

我快发疯了.因为这个对象是动态创建的,所以我不能在IB中设置它的 colored颜色 (就像我以前对条形按钮项目所做的那样).

我try 过的解决方案包括:

  1. 将其设置在接收器的viewDidLoad
  2. 将其设置在接收器的viewDidAppear

    self.navigationItem.backBarButtonItem.tintColor = [UIColor whiteColor];

  3. 当我看到这不太管用时,我try 设置LeftBarbuttonite:

self.navigationItem.leftBarButtonItem.tintColor = [UIColor whiteColor];

  1. 当调用新视图时,在推送新视图之前,我在应用程序的委托中try 了以下代码(我从其他SO答案中获得):

    [[UIBarButtonItem appearance] setTintColor:[UIColor whiteColor]];

我找到的所有谷歌答案都建议使用上面的代码,但对我来说根本不起作用.也许iOS 7的外观API有一些变化?无论我如何或在哪里try 将"Categorías"设置为白色,它始终是默认的蓝色.

推荐答案

在iOS 7中,要设置应用程序中所有barButtonItems的 colored颜色 ,请在AppDelegate的应用程序窗口中设置tintColor属性.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window.tintColor = [UIColor whiteColor];
    return YES;
}

更多详细信息请参见第Apple's iOS 7 UI Transition Guide页(具体请参见"使用色调"部分).

***OR***

根据一些 comments ,您还可以使用UINavigationBar外观代理实现这一点.这将只影响UIBarButtonims的tintColor,而不是在窗口上设置tintColor并影响该窗口的所有子视图.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    if([UINavigationBar conformsToProtocol:@protocol(UIAppearanceContainer)]) {
        [UINavigationBar appearance].tintColor = [UIColor whiteColor];
    }

    return YES;
}

Objective-c相关问答推荐

覆盖@property setter 和无限循环

Objective-C struct 的默认值以及如何测试

NSString "nil or empty" 判断 - 这完成了吗?

多个 WKWebView 之间的 Cookie 共享

iOS UIImageView 缩小图像在 iPad 2 上产生锯齿图像

如何判断 Cocoa 和 Objective-C 中是否存在文件夹?

如何转储存储在 Objective-C 对象(NSArray 或 NSDictionary)中的数据

在我的 iOS Mail 和 Safari 应用程序中支持 Open In... 菜单项

如何用 Java 开发 iPhone 应用程序?

以编程方式访问应用标识符前缀

iOS Buttons - 添加边框

Modal segue,导航栏消失

iOS 7 中的 UITextView 链接检测

为整个 iPhone / iPad 应用程序设置背景图像

从带有参数的方法名称创建 Select 器

在 iOS 7 上运行应用程序时显示黑条(4 英寸视网膜显示屏)

带有Go按钮而不是返回的 iOS 键盘

找出用户是否按下了 uinavigationcontroller 中的后退按钮?

iOS 上的电话号码格式

UITableViewCell中的文本居中对齐问题