0

重複の可能性:
nsstringをuicolorに変換する方法は?

Objective-Cプログラマーではありませんが、このようなことができないかどうかはわかりません。文字列値を返すことはわかっていますが、これらの値を取得するための簡潔な方法が必要です。

NSMutableArray *colorsArray=[[NSMutableArray alloc] init];
[colorsArray addObject:@"whiteColor"];
[colorsArray addObject:@"blueColor"];
 // val5 is either 0 or 1
[view setBackgroundColor:[UIColor [colorsArray objectAtIndex:val5]]];

これは可能ですか?

事前にt​​hx

4

3 に答える 3

5

代わりに色を直接保存してみませんNSStringか?

NSMutableArray *colorsArray=[[NSMutableArray alloc] init];
[colorsArray addObject:[UIColor whiteColor]];
[colorsArray addObject:[UIColor blueColor]];
if (val5 < colorsArray.count) // Doesn't hurt any to be safe, and this way you won't get a crash if something messes up your val5 at some point
{
    // val5 is either 0 or 1
    [view setBackgroundColor:[colorsArray objectAtIndex:val5]];
}
else
{
    NSLog(@"Error - Color not expected - leaving color the way it is.")
}

そのままコーディングするとコンパイルされません。有効な構文ではないため、構文が無効になり[UIColor @"whiteColor"]ます。使用することもできますperformSelector:が、実際に色を文字列として保存する必要がない限り、これは無意味です。

于 2012-12-06T19:43:43.557 に答える
3

NSStringまたは、配列でインスタンスを使用する必要がある場合:

NSMutableArray *colorsArray=[[NSMutableArray alloc] init];
[colorsArray addObject:@"whiteColor"];
[colorsArray addObject:@"blueColor"];

SEL colorSelector = NSSelectorFromString([colorsArray objectAtIndex:val5]);
[view setBackgroundColor:[UIColor performSelector:colorSelector]];
于 2012-12-06T19:45:57.220 に答える
2
NSMutableArray *colorsArray = [[NSMutableArray alloc] init];
[colorsArray addObject:@"whiteColor"];
[colorsArray addObject:@"blueColor"];
UIColor *color = [UIColor performSelector:NSSelectorFromString([colorsArray objectAtIndex:1])];
view.backgroundColor = color;
于 2012-12-06T19:45:38.523 に答える