-(IBAction) changeColOnClick:(id)sender
{
NSArray *colors = [NSArray arrayWithObjects:@"[UIColor brownColor]",@"[UIColor blackColor]",@"[UI greenColor]",@"[UIColor redColor]", nil];
self.view.backgroundColor = [colors objectAtIndex:i];
// ERROR::changebackground[1089:207] -[NSCFString CGColor]: unrecognized selector sent to instance 0x357c
//label.text = [colors objectAtIndex:i]; //i is defined in the implementation
i++;
if(i==[colors count]-1)
{
i=0;
}
}
質問する
2189 次
6 に答える
2
文字列を配列に保存しているため、コードがクラッシュしています。次のように、実際の色を配列に保存してみてください。
NSArray *colors = [NSArray arrayWithObjects:[UIColor brownColor], [UIColor blackColor], [UIColor greenColor], [UIColor redColor], nil];
self.view.backgroundColor = [colors objectAtIndex:i];
それでもうまくいかない場合は、次のようなことが必要になる場合があります。
self.view.backgroundColor = ((UIColor *)[colors objectAtIndex:i]).CGColor;
于 2012-11-20T13:13:25.393 に答える
2
@"[UIColor brownColor]"
でarray
はありNSString
ませんUIColor
。
したがってarray
、次のようになります。
NSArray *colors = [NSArray arrayWithObjects:[UIColor brownColor],[UIColor blackColor],[UI greenColor],[UIColor redColor], nil];
次のように単一のインスタンスを追加しますMutableArray
。
[colors addObject:[UIColor blackColor]];
すぐ:
于 2012-11-20T13:14:30.243 に答える
2
このようにコードを変更します。それが動作します
-(IBAction) changeColOnClick:(id)sender
{
NSArray *colors = [NSArray arrayWithObjects:[UIColor brownColor],[UIColor blackColor],[UI greenColor],[UIColor redColor], nil];
self.view.backgroundColor = [colors objectAtIndex:i];
//label.text = [colors objectAtIndex:i]; //i is defined in the implementation
i++;
if(i==[colors count]-1)
{
i=0;
}
}
于 2012-11-20T13:15:12.987 に答える
1
ちょっと仲間、私はあなたのコードをテストしているだけで、あなたはこのようにメソッドを設定しています:-
int i;
-(IBAction) changeColOnClick:(id)sender
{
NSArray *colors = [NSArray arrayWithObjects:@"redColor",@"blackColor",@"greenColor",@"redColor", nil];
NSString *str =[colors objectAtIndex:i];
i++;
//DARK_BACKGROUNDNavigation=str;
SEL blackSel = NSSelectorFromString(str);
UIColor* tColor = nil;
if ([UIColor respondsToSelector: blackSel])
tColor = [UIColor performSelector:blackSel];
[self.view setBackgroundColor:tColor];
if(i==[colors count]-1){i=0;}
}
その作業幸せなコーディング:)
IT のデモをダウンロード
于 2012-11-20T13:21:32.290 に答える
1
文字列オブジェクトのような配列に色を追加します。それは違うの。あなたはそのようにするべきです:
[colors addObject:[UIColor blackColor]];
[colors addObject:[UIColor redColor]];
等々
于 2012-11-20T13:12:42.853 に答える
1
配列内のオブジェクトを文字列として取得したため、配列が得られます。UIColor タイプのオブジェクトを取得する必要があります。
UIColor *color1 = [UIColor brownColor];
UIColor *color2 = [UIColor blackColor];
UIColor *color3 = [UIColor greenColor];
UIColor *color4 = [UIColor redColor];
NSArray *colors = [NSArray arrayWithObjects:color1,color2,color3,color4, nil];
self.view.backgroundColor = [colors objectAtIndex:i];
于 2012-11-20T13:23:27.353 に答える