3

可能性の重複:私は、forループの中でいくつかの動的な変数名を使用したいのですが、どのように実際にへと困惑しています
create multiple variables based on an int count
Objective C Equivalent of PHP's “Variable Variables”ダイナミック変数名のiOS

変数を参照してください。

私は一連のUILabelsタイトルを持っています。poll0 - poll8です。 forループを使用して、配列内の対応する数値から参照される別の値にそのtext値を設定します。たとえば、次のように

for (int i = 0; i < [pollData count]; i++) { 
    label(i value).text = [NSString stringWithFormat:@"%@", [[pollData objectAtIndex:i] toString]]; //sorry for the java-esque method names, just create what I'm used to 
} 

どのように私はそのi値を使用していますか?

答えて

5

あなたが求めるものを正確に行うことはできません。最善のアプローチは、配列を、配列とループにラベルを置くために、次のようになります。

NSArray *labels = [NSArray arrayWithObjects:poll0, poll1, poll2, ..., nil]; 
for (UILabel *label in labels) { 
    label.text = [[pollData objectAtIndex:i] toString]; 
} 

あなたはまた、彼らは書き込みせずにアレイにグループにラベルをあなたを許すだろうとIBOutletCollectionsを見てみたいことがあります上記の配列初期化コード代わりに、あなたはラベルはInterface Builderで、すべてのラベルまで出口フック、その後、あなたの.hファイルでこれを置く:

@property (nonatomic, retain) IBOutletCollection(UILabel) NSArray *labels; 
+0

私はそれに気をつけてください:)私はこのように高速列挙を使用することに常に気をつけていますが、ドキュメントは適切な順序で進めるべきだと言います。 – rosslebeau

+0

はい、配列の順番で高速列挙が実際に機能することを確認できます。私はいつも使っている! –

+0

私はどのようにしてIBを介してプログラミングしてきたのですか?IBOutletCollectionsについてこれまで知らなかったことはありますか?私の神様、私はこの時点から貯蓄している時間に作られたお金の50%をあなたに渡すべきです。ありがとうございました! –

0

あなたは**代わりにNSArrayを使用してのUILabelを持つ配列を作成することができます。このようにすれば、UILabelへのキャストなしで配列要素を使うことができます