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