2015-06-01 39 views
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]; 
    } 
} 

回答

0

單元格1中的按鈕和單元格8中的按鈕是相同的UIButton對象,問題不在於此方法。你必須有兩個按鈕指向一個UIButton對象。檢查創建按鈕#1和按鈕#8的代碼。

+0

感謝您的評論。但我定製單元格包括標籤「名稱」和按鈕「單擊」,然後它自動加載在tableview中。這意味着相同的方法,相同的UIButton對象。 – Nadie

+0

我說的有點隨心所欲,單元格1中的按鈕和單元格8中的按鈕不能是相同的UIButton對象,但我相信問題不在於此方法,似乎clickLike方法在按鈕#1和按鈕上調用了兩次#8在一個點擊行動,所以檢查點擊事件發生的代碼。更重要的是,不要使用curImg == like和curImg ==不喜歡,UIImage緩存可能是無效的,會發生意想不到的事情。最後,你有沒有注意到你有相同的代碼「sender.selected = TRUE;」在「if」和「else if」塊中? – blindpirate

+0

這似乎沒有錯。在clickLike方法中嘗試NSLog(sender.tag),你可以看到這個方法實際上被調用了兩次。 – blindpirate

相關問題