изменение текста метки с помощью тегов - PullRequest
1 голос
/ 03 апреля 2012

Вот что я хотел бы сделать.

У меня 5 ярлыков. Я хотел бы изменить атрибуты (цвет фона), используя переменную. Поэтому, если переменная (x) равна 3, это поменяет фон на label03.

Одновременно будет 5 изображений. Я бы изменил атрибуты (альфа), используя ту же переменную. Поэтому, если переменная (x) равна 3, как указано выше, она поменяет фон label03 и альфа на image03.

Мне не хватает способа выбрать правильный тег, чтобы (х) указывал на то, на что он мне нужен.

Ответы [ 4 ]

1 голос
/ 03 апреля 2012

Я думаю, вы должны сделать что-то вроде этого:

// create an offset by control type (zero is not a good value here)
#define kLABEL_TAG_OFFSET  32
#define kIMAGE_TAG_OFFSET  64

// when creating the controls
UILabel *label0 = [[UILabel alloc] initWithFrame:...];
label0.tag = kLABEL_TAG_OFFSET + 0;

// and so on 0..3
label4.tag = kLABEL_TAG_OFFSET + 4;
imageView4.tag = kIMAGE_TAG_OFFSET + 4

// then, when you want to alter a particular image and label
//
- (void)setPropertiesOnControlsIndexedBy:(NSInteger)index {

    UILabel *label = (UILabel *)[self.view viewWithTag:kLABEL_TAG_OFFSET + index];
    UImageView *image = (UImageView *)[self.view viewWithTag:kIMAGE_TAG_OFFSET + index];

    label.backgroundColor = [UIColor greenColor];
    image.alpha = 0.5;
}
1 голос
/ 03 апреля 2012

Предполагая, что вы используете перо для создания и размещения этих элементов, все, что вам нужно сделать, это открыть инспектор атрибутов и установить тег для каждой из меток и изображений.Я хотел бы дать меткам метку 1х, а изображениям метку 2х (где х - номер элемента).Таким образом, метки имеют теги 10-14, а изображения имеют теги 20-24.Затем в вашем viewController, если у вас есть int x, вы можете получить метку и imageViews со следующими строками.

UILabel *label = [self.view viewWithTag:10+x];
UIImageView *imageView = [self.view viewWithTag:20+x];
0 голосов
/ 03 апреля 2012

Вызовите -reloadData, если вы хотите изменить x, и для значений по умолчанию установлено значение x, поэтому после перезагрузки они автоматически изменятся.

- (void) xChanged {

    [self.tableView reloadData];    

}

- (UITableViewCell *) tableView:(UITableView *) tv cellForRowAtIndexPath:(NSIndexPath *) ip {

    cell.imageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"image-%d", x]];
    cell.imageView.alpha = x;

}
0 голосов
/ 03 апреля 2012

Создайте / настройте все метки и изображения в viewDidLoad, и каждый раз, когда вы изменяете значение переменной, сообщайте представлению о необходимости перезагрузки.

 [someView reloadData];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...