助けてください。私は自分のウィンドウに4つのNSButtonを持っています(グラデーションスタイルとして設定されています)。そして、ユーザーの入力に応じて、4つの異なる色のうち1つのカラーを(.pngファイルを使ってsetImageを使って)作ります。正常に動作します私のコードは、次のとおりです。NSButton IBOutletの名前を配列に格納する際にエラーが発生し、配列にアクセスしてNSButtonのsetImageにアクセスしました
if ([[ranColors objectAtIndex:0] isEqualToString:@"red"]) {
[color1 setImage:[NSImage imageNamed:@"Red.png"]];
}
else if ([[ranColors objectAtIndex:0] isEqualToString:@"yellow"]) {
[color1 setImage:[NSImage imageNamed:@"Yellow.png"]];
}
else if ([[ranColors objectAtIndex:0] isEqualToString:@"blue"]) {
[color1 setImage:[NSImage imageNamed:@"Blue.png"]];
}
else {
[color1 setImage:[NSImage imageNamed:@"Green.png"]];
}
私は4つのボタン(カラー1、カラー2、カラー3とcolor4)のために、このコードを4回繰り返します。 ranColorsは、ユーザーの色の選択を保持する配列です。
NSArrayを使用してボタンIBOutletの名前(color1、color2、color3、color4)を保持し、forループを使用して4サイクルを介在させてコードを単純化しようとしています。
for (int x = 0; x < 4; ++x) {
if ([[ranColors objectAtIndex:x] isEqualToString:@"red"]) {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Red.png"]];
}
else if ([[ranColors objectAtIndex:x] isEqualToString:@"yellow"]) {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Yellow.png"]];
}
else if ([[ranColors objectAtIndex:x] isEqualToString:@"blue"]) {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Blue.png"]];
}
else {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Green.png"]];
}
}
私はエラーを取得しています:[__NSCFConstantString setImage:]:認識されていないセレクタがインスタンス0x100006098に送信されたここでは、コードです。配列要素を読み込んだ後、setImageを正しいファイルにしようとすると、エラーが発生しています。ボタンのIBOutletの名前を配列に格納してから、その名前にアクセスしてプロパティを設定することはできないようです。
ご協力いただければ幸いです。
チャームのように働いた - ありがとう! – Keith
それは素晴らしいです!答えを受け入れてください。ハッピーコーディング! – Yan
申し訳ありません、忘れてしまいました。 – Keith