// 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++
——这是增加计数器的一种非常标准的方法。
作为创建scoreLabels
数组的替代方法,您确实可以检索tag
视图控制器的子视图的属性(在这种情况下,您在 Interface Builder 中UILabel
添加值的实例)。tag
假设该tag
值是可预测的——例如,UILabel
从scoreLabel1
到的每个scoreLabel10
都标有tag
等于_index
我们在for
循环中使用的值(0 到 9)的值——那么你可以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
属性的子视图,这取决于您在 Interface Builder 中设置界面的方式。)
有些人编写的函数将 1000 或其他整数相加,允许您将子视图类型分组在一起——UILabel
实例得到 1000、1001 等,UIButton
实例得到 2000、2001 等。