Специальный тег для UIButton? - PullRequest
0 голосов
/ 03 июля 2011

У меня есть 3 разных кнопки UIB для каждого сгруппированного изображения.У меня есть идентификаторы для каждого изображения.Прямо сейчас у меня есть специальный идентификатор для каждого изображения, и я установил кнопку с этим тегом.

Я хочу изменить фоновое изображение того, которое выбрано при нажатии на него.Проблема в том, что 3 кнопки имеют одинаковый тег, поэтому я не могу изменить фоновое изображение правой кнопки.

Вот что у меня есть:

UIButton *likeButton = [UIButton buttonWithType:UIButtonTypeCustom];
[likeButton setBackgroundColor:[UIColor clearColor]];
[likeButton setBackgroundImage:[UIImage imageNamed:@"icon_like_button.png"] forState:UIControlStateNormal];
[likeButton setBackgroundImage:[UIImage imageNamed:@"icon_like_button_hit.png"] forState:UIControlStateSelected];
[likeButton setBackgroundImage:[UIImage imageNamed:@"icon_like_button_hit.png"] forState:UIControlStateHighlighted];
[likeButton setBackgroundImage:[UIImage imageNamed:@"icon_like_button_hit.png"] forState:UIControlStateDisabled];
[likeButton setFrame:CGRectMake(13, 52 + (285 * count), 51, 55)];
[likeButton addTarget:self action:@selector(likeDudle:) forControlEvents:UIControlEventTouchDown];
[likeButton setTag:theIdInt];
[likeButton setTitle:@"no_like" forState:UIControlStateNormal];
[scrollView addSubview:likeButton];

- (IBAction)likeDudle: (id)sender {

NSInteger tagId = ((UIControl*)sender).tag;

UIButton *tempButton = (UIButton*)[scrollView viewWithTag:tagId];

NSLog(@"likeDudle: %d // %@", tagId, tempButton.titleLabel.text);

if ([tempButton.titleLabel.text isEqualToString:@"no_like"]) {
    [tempButton setBackgroundImage:[UIImage imageNamed:@"icon_like_button_hit.png"] forState:UIControlStateNormal];
    [tempButton setTitle:@"like" forState:UIControlStateNormal];
} else if ([tempButton.titleLabel.text isEqualToString:@"like"]) {
    [tempButton setBackgroundImage:[UIImage imageNamed:@"icon_like_button.png"] forState:UIControlStateNormal];
    [tempButton setTitle:@"no_like" forState:UIControlStateNormal];
}

Есть ли лучший способ сделать это?

Спасибо, Култон

1 Ответ

0 голосов
/ 03 июля 2011

Если у вас менее 10 изображений, присвойте кнопке i th тег i*10+image.tag.Затем вы можете получить image.tag по button.tag % 10, и теги кнопок будут уникальными.Вы даже можете получить информацию только о кнопке int b = button.tag/10.

Кроме того, вы можете получить доступ к тегу изображения кнопки с помощью button.backgroundImage.tag, чтобы у кнопки могла быть своя отдельная система тегов, в зависимости от вашего использования.

...