Как изменить изображение кнопки с помощью тега? - PullRequest
1 голос
/ 24 августа 2011

Как я могу изменить изображение на кнопке, когда у меня есть только тег этой кнопки.например, у меня 20 кнопок, а для тега установлено значение от 0 до 19. Теперь в ответ на какое-то действие у меня есть тег 5 этой кнопки, и теперь я хочу изменить изображение этой кнопки.как это возможно?Пожалуйста, помогите

Ответы [ 4 ]

3 голосов
/ 24 августа 2011

Я думаю, вы можете использовать это:

for (UIButton *button in self.view.subviews) {
        if (button.tag == 5) {
            [button setBackgroundImage:[UIImage imageNamed:@"new-imagepng"] forState:UIControlStateNormal];
        }
    }

Но я не проверял.

2 голосов
/ 24 августа 2011
UIButton *button = (UIButton *)[myView viewWithTag:myTag];
[button setImage:... forState:...];

Переменная myView является суперпредставлением для 20 кнопок. Вы можете получить объект UIButton из тега и установить изображение для вашего состояния.

2 голосов
/ 24 августа 2011

Следующий код дает вам нужную кнопку (superView относится к любому виду, удерживающему вашу кнопку):

UIButton *button5 = [superView viewWithTag:5];

Затем вы можете изменить свойства кнопки по своему усмотрению.

0 голосов
/ 24 августа 2011

Сделайте action всех кнопок одинаковыми, скажем @(selector)buttonPressed:.Затем в вашем обработчике сделайте следующее:

-(void)buttonPressed:(id)sender {
  UIButton *button = (UIButton *) sender;
  int tag = button.tag; 
  // respond as you wish using tag... for example:
  UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"img%02d.png", tag]];
  [button setImage:image forState:UIControlStateNormal];
}

Еще одно предупреждение: лучше использовать целые числа от 1 до 20, а не от 0 до 19. Таким образом, вы избежите ошибок, которые могут возникнуть из-за того, что по умолчанию tagкаждый UIView установлен на 0.

...