2013-03-17 95 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