如何在iOS中更新自定义类别(UIColor)?

如何在iOS中更新自定义类别(UIColor)?,ios,uicolor,Ios,Uicolor,我已经创建了一个自定义UIColor类,这样我就可以在整个应用程序中轻松更新颜色。我有一个带有各种其他颜色设置的UITableView。我不知道如何根据选择将自定义颜色类更新为新颜色 谢谢你的帮助 为清晰起见,请编辑: 自定义类: + (UIColor *)NPSBackgroundColor; + (UIColor *)NPSPrimaryColor; + (UIColor *)NPSSecondaryColor; + (UIColor *)NPSAccentColor; +(UIColo

我已经创建了一个自定义UIColor类,这样我就可以在整个应用程序中轻松更新颜色。我有一个带有各种其他颜色设置的UITableView。我不知道如何根据选择将自定义颜色类更新为新颜色

谢谢你的帮助

为清晰起见,请编辑:

自定义类:

+ (UIColor *)NPSBackgroundColor;
+ (UIColor *)NPSPrimaryColor;
+ (UIColor *)NPSSecondaryColor;
+ (UIColor *)NPSAccentColor;


+(UIColor *)NPSBackgroundColor{
return [UIColor colorWithRed: 0.909f green: 0.909f blue: 0.909f alpha:1];
}
+(UIColor *)NPSPrimaryColor{
    return [UIColor colorWithRed: 0.255 green: 0.357 blue: 0.655 alpha: 1];
}
+(UIColor *)NPSSecondaryColor{
    return [UIColor colorWithRed: 0.0f green: 0.0f blue: 0.0f alpha:1];
}
+(UIColor *)NPSAccentColor{
    return [UIColor colorWithRed: 0.0f green: 0.0f blue: 0.0f alpha:1];
}

我想在用户点击按钮时更新“primaryColor”一词

您的代码是硬代码,具有无法更改的特定颜色。您需要重新构造代码以返回可以修改的变量。大概是这样的:

你的.h:

@interface UIColor (MyColors)

+ (UIColor *)NPSBackgroundColor;
+ (UIColor *)NPSPrimaryColor;
+ (UIColor *)NPSSecondaryColor;
+ (UIColor *)NPSAccentColor;

+ (void)setNPPrimaryColor:(UIColor *)color;

@end
你的

#import "UIColor+MyColors.h"

static UIColor *NPSBackgroundColor = nil;
static UIColor *NPSPrimaryColor = nil;
static UIColor *NPSSecondaryColor = nil;
static UIColor *NPSAccentColor = nil;

@implementation UIColor (MyColors)

+(UIColor *)NPSBackgroundColor{
    if (!NPSBackgroundColor) {
        NPSBackgroundColor = [UIColor colorWithRed: 0.909f green: 0.909f blue: 0.909f alpha:1];
    }

    return NPSBackgroundColor;
}

+(UIColor *)NPSPrimaryColor{
    if (!NPSPrimaryColor) {
        return [UIColor colorWithRed: 0.255 green: 0.357 blue: 0.655 alpha: 1];
    }

    return NPSPrimaryColor;
}

+(UIColor *)NPSSecondaryColor{
    if (!NPSSecondaryColor) {
        return [UIColor colorWithRed: 0.0f green: 0.0f blue: 0.0f alpha:1];
    }

    return NPSSecondaryColor;
}

+(UIColor *)NPSAccentColor{
    if (!NPSAccentColor) {
         return [UIColor colorWithRed: 0.0f green: 0.0f blue: 0.0f alpha:1];
    }

    return NPSAccentColor;
}

+ (void)setNPSPrimaryColor:(UIColor)color {
    NPSPrimaryColor = color;
}

@end

请随意添加其他设置者。

这个问题非常不清楚。也许发布一些相关的代码,更好地描述您遇到的问题会有所帮助。为clarityAwesome添加了更多信息,感谢RMaddy这么多的工作perfectly@Nathan我承认这是一个解决办法。但我想请您完全避免预期的设计模式。您试图实现的是一个颜色存储库。类别在功能上旨在扩展对象(也可能是类)的功能。即使使用类别,也必须创建自己的存储库(此处以静态变量的形式)。所以我建议你完全避免这个,除非你太想使用一个类别。