// create NSMutableArray* of score UILabel items, called "scoreLabels"
NSMutableArray *scoreLabels = [NSMutableArray arrayWithCapacity:10];
[scoreLabels addObject:scoreLabel1];
[scoreLabels addObject:scoreLabel2];
// ...
NSUInteger _index = 0;
for (NSNumber *_number in scoresArray) {
UILabel *_label = [scoreLabels objectAtIndex:_index];
_label.text = [NSString stringWithFormat:@"%d", [_number intValue]];
_index++;
}
編集
なぜコメントアウトしたいのかわかりません_index++
。私はこのコードをテストしていないので、どこかで何かが足りないのかもしれません。しかし、私は何も悪いことは見ていません_index++
—それはカウンターをインクリメントするためのかなり標準的な方法です。
配列を作成する代わりに、View Controllerのサブビュー(この場合、Interface Builderで値を追加するインスタンス)scoreLabels
のプロパティを取得することもできます。tag
UILabel
tag
tag
値が予測可能であると仮定すると(たとえば、各UILabel
fromscoreLabel1
からはループで使用する値(0から9)に等しいscoreLabel10
ラベルが付けられます)、直接参照できます。tag
_index
for
UILabel
// no need to create the NSMutableArray* scoreLabels here
NSUInteger _index = 0;
for (NSNumber *_number in scoresArray) {
UILabel *_label = (UILabel *)[self.view viewWithTag:_index];
_label.text = [NSString stringWithFormat:@"%d", [_number intValue]];
_index++;
}
その機能を実現するための鍵は、tag
値がに対して一意である必要があり、UILabel
で参照できるものでなければならないということです-viewWithTag:
。
上記のコードは、tag
値が値と同じであることを非常に単純に想定していますが_index
、それは必須ではありません。(また、UILabel
インスタンスはView Controllerのview
プロパティのサブビューであると想定しています。これは、Interface Builderでのインターフェイスの設定方法によって異なります。)
サブビューのタイプをグループ化できる1000またはその他の整数を追加する関数を作成する人もいます。UILabel
インスタンスは1000、1001などを取得し、UIButton
インスタンスは2000、2001などを取得します。