У меня есть около 10 элементов управления UIImageView с именами от pop1 до pop10.
У меня есть 10 кнопок над UIImageView. Кнопки имеют «тег» от 1 до 10, поэтому я знаю, какая кнопка нажимается:
UIButton * aButton =(UIButton *)sender;
aButton.tag - gives me the tag
Я хочу сослаться на UIImageView под кнопкой, чтобы изменить ее изображение при нажатии кнопки над ней:
UIImage *image = [UIImage imageNamed: @"NewImage.png"];
[pop1 setImage:image];
Но в приведенном выше коде я не хочу жестко кодировать «pop1» или «pop2» и т. Д. Я хочу построить строку, используя тег кнопки
NSString *img = [NSString stringWithFormat:@"pop%d",aButton.tag];
дает мне "pop1" или "pop2" и т. Д., Так как я использую aButton.tag.
Итак, используя эту информацию, как я могу написать код для ссылки на UIImage, чтобы изменить его изображение?
В его строке нужно изменить «pop1», чтобы он использовал встроенную строку - img:
[pop1 setImage:image];
Я НЕ хочу вводить оператор switch для каждого тега, так как позже я намереваюсь добавить большое количество таких элементов управления, и это не вариант.
Есть ли способ или есть какой-то другой подход, который я могу использовать?
Обновление
Я попробовал ответ Джона в коде, подобном этому
-(IBAction)pop:(id)sender{
UIButton * aButton =(UIButton *)sender;
NSLog(@"clicked button with TAG %d",aButton.tag);
if (aButton.tag > 0) {
UIImageView *img = (UIImageView *)[self.view viewWithTag:aButton.tag];
UIImage *ix = [UIImage imageNamed:@"Newimage.png"];
[img setImage:ix];
// stop any more clicks
aButton.tag = 0;
}
}
Все строится нормально, но при запуске я получаю сообщение об ошибке, потому что "img" отображается в окне отладки как "UIButton", а не как UIImage (я думаю).
Я полностью озадачен этим, так как в IB элемент управления отображается как Class: UIImageView, а в коде я называю его UIImage? Они взаимозаменяемы?
Как получить доступ к свойству «tag» в «UIImageView - отображает одно изображение или анимацию, описанную массивом изображений (справка)»
По сути, кнопки также имеют тег, поэтому, если нажать кнопку 2, тег равен 2. Поэтому я хочу изменить изображение UIImageView с тегом = 2 и т. Д.
В настоящее время я изучаю C / C, и такая простая задача на большинстве других языков настолько утомительна.
Я в растерянности. Помогите пожалуйста.