3

次のような NSString 値のセットがあります。

self.dataArray = @[@"blue", @"orange", @"green", @"red", @"yellow"];

次のようなことができるようにしたいと考えています (上記の色のいずれかを self.colorString に設定した後):

self.view.backgroundColor=[UIColor self.colorString + Color];

しかし、明らかにそれはできません。可能な方法は何ですか?

4

3 に答える 3

7

ほぼ普遍的な方法:

NSDictionary *colors = @{
    @"red": [UIColor redColor],
    @"green": [UIColor greenColor],
    @"blue": [UIColor blueColor]
};

NSString *name = @"blue";
UIColor *c = colors[name];

真に普遍的な方法:

NSString *selName = [NSString stringWithFormat:@"%@Color", name];
SEL sel = NSSelectorFromString(selName);
UIColor *color = [[UIColor class] performSelector:sel];
于 2013-08-03T05:50:05.067 に答える
2

次のようなことを試すことができます:

SEL myColor = NSSelectorFromString([NSString stringWithFormat:@"%@Color", self.colorString]);
self.view.backgroundColor = [[UIColor class] performSelector:myColor]
于 2013-08-03T05:51:30.407 に答える
1

データを辞書の色に関連付けて保存してみてください。

UIColor *blue = [UIColor blueColor];
UIColor *red = [UIColor redColor];

NSDictionary *colors = @{@"blue" : blue, @"red" : red};

UITextField *pinga = [[UITextField alloc]init];

pinga.textColor = [colors objectForKey:@"red"];
于 2013-08-03T05:50:01.993 に答える