1
我是Objective-C的初學者。我有個問題。 我有20個單元格的tableview,它有每個單元格的「名稱」和「按鈕」。我想單擊單元格中的按鈕時,該按鈕將被更改爲背景圖像。但我不知道爲什麼,當我單擊單元格#1中的按鈕時,它會更改背景,但單元格#8中的按鈕也會自動更改背景。任何人有任何想法?請幫幫我。單元格按鈕的動作 - Objective C
-(void)clickLike:(UIButton*)sender
{
UIImage *curImg = sender.currentImage;
UIImage *like = [UIImage imageNamed:@"like.png"];
UIImage *dislike = [UIImage imageNamed:@"dislike.png"];
if(curImg==like){
[sender setImage:[UIImage imageNamed:@"dislike.png"] forState:UIControlStateNormal];
sender.selected = TRUE;
//Insert dislike song
SongObject *list = [self.arrSong objectAtIndex:sender.tag];
[email protected]"1";
idSong=list.idsong;
[self dislikeSong:idSong and:idUser];
}
else if(curImg==dislike){
[sender setImage:[UIImage imageNamed:@"like.png"] forState:UIControlStateNormal];
sender.selected = TRUE;
//Insert like song
SongObject *list = [self.arrSong objectAtIndex:sender.tag];
[email protected]"1";
idSong=list.idsong;
[self likeSong:idSong and:idUser];
}
}
感謝您的評論。但我定製單元格包括標籤「名稱」和按鈕「單擊」,然後它自動加載在tableview中。這意味着相同的方法,相同的UIButton對象。 – Nadie
我說的有點隨心所欲,單元格1中的按鈕和單元格8中的按鈕不能是相同的UIButton對象,但我相信問題不在於此方法,似乎clickLike方法在按鈕#1和按鈕上調用了兩次#8在一個點擊行動,所以檢查點擊事件發生的代碼。更重要的是,不要使用curImg == like和curImg ==不喜歡,UIImage緩存可能是無效的,會發生意想不到的事情。最後,你有沒有注意到你有相同的代碼「sender.selected = TRUE;」在「if」和「else if」塊中? – blindpirate
這似乎沒有錯。在clickLike方法中嘗試NSLog(sender.tag),你可以看到這個方法實際上被調用了兩次。 – blindpirate