// 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++;
}
EDIT
Я не уверен, почему вы хотите, чтобы закомментировать _index++
. Я не тестировал этот код, так что, возможно, я чего-то не хватает. Но я не вижу ничего плохого в _index++
- это довольно стандартный способ увеличить счетчик.
В качестве альтернативы созданию scoreLabels
массива, вы могли бы действительно извлечь tag
свойства подобозрения контроллера вида (в данном случае, UILabel
экземпляров, которые вы добавляете значение tag
в Interface Builder).
Предполагая, что значение 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 и т. д.
Вы даже можете избавиться от массива scoreLabels, если теги были добавлены в объекты UILabel в Interface Builder и viewWithTag: для их извлечения. – gerry3
Спасибо, Алекс. Это происходит только в том случае, если я комментирую _index ++. Затем он возвращает окончательное число в массиве на метке, определенной в [scoreLabels addObject: scoreLabel1]; – user244295
Получил эту работу, используя -viewWithTag, Cheers для информации. – user244295