2013-03-17 57 views
3

我想创建一个方法并使用字符串值“redColor”来为标签设置UIColor。 tableColorName是NSString“redColor”,我尝试应用选择器来创建UIColor并将其应用到我的textLabel。由于使用NSString为标签设置颜色

-(void) changeLabelColor 
{ 
    SEL labelColor = NSSelectorFromString([NSString stringWithFormat:[@"%@", tableColorName]]); 

    UIColor *color = [[UIColor class] performSelector:labelColor]; 
    self.textLabel.textColor = color; 
} 
+3

有什么问题? – 2013-03-17 00:24:01

+0

我并不确定!我得到警告“PerformSelector可能导致泄漏,因为它的选择器是未知的”,但我所知道的是textLabel仍然是黑色的! – ShadyBaker 2013-03-17 00:29:04

+0

@ user1827141:检查我的答案,它工作正常..测试 – 2013-03-17 00:36:26

回答

10

使用此方法

-(UIColor *)giveColorfromStringColor:(NSString *)colorname 
{ 
    SEL labelColor = NSSelectorFromString(colorname); 
    UIColor *color = [UIColor performSelector:labelColor]; 
    return color; 
} 

呼叫作为

[view setBackgroundColor:[self giveColorfromStringColor:@"redColor"]]; 

方法名,你的情况,来电会采取colorname作为输入,并给出了相应的UIColor

因此be

self.textLabel.textColor = [self giveColorfromStringColor:@"redColor"]; 
+0

+1对于很好的解释 – 2013-03-17 01:53:13

+0

感谢您的帮助! – ShadyBaker 2013-03-17 10:07:43

+0

+1对于尼斯答案:)。解释得好 – 2013-05-27 12:58:32