2011-07-03 71 views
0

我有3個不同的UIButtons爲每個圖像分組。我有每個圖像的ID。現在,我爲每個圖像都有一個特殊的ID,並且使用該標籤設置按鈕。UIButton的特殊標籤?

我想更改當您點擊它時選擇的背景圖像。問題是,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]; 
} 

有沒有在做這更好的辦法?

感謝, 庫爾頓

+0

爲什麼不給每個按鈕一個獨特的標籤? – PengOne

+0

這一切都是從服務器完成的,每個圖像都有一個唯一的ID。每個按鈕都有一個按鈕。所以如果我給了他們不同的id,它就不能匹配正確的圖像。 – iosfreak

回答

0

如果您有少於10張圖像,然後給i個按鈕的標籤i*10+image.tag。然後您可以通過button.tag % 10檢索image.tag,並且按鈕標籤將是唯一的。您甚至可以通過int b = button.tag/10檢索僅按鈕信息。

此外,您可以使用button.backgroundImage.tag訪問該按鈕的圖像標籤,這樣該按鈕可以有自己的獨立標籤系統,具體取決於您的使用。

+0

我想過這個。但我有一個無盡的滾動類型的東西,所以當你到達底部,它加載更多。一個想法是給ID一個十進制數,但它只是想將其舍入 – iosfreak

+0

如何爲backgroudImage設置標籤? – iosfreak

+0

'button.backgroundImage'是'UIImage'的一個實例,所以它有'tag'屬性。只要'button.backgroundImage.tag = 0;' – PengOne