Button 单元格中按钮的操作-目标C

Button 单元格中按钮的操作-目标C,button,tableview,cell,Button,Tableview,Cell,我是Objective-C的初学者。我有个问题。 我有一个20个单元格的tableview,每个单元格都有“名称”和“按钮”。我想当我点击单元格中的按钮时,该按钮将被更改为背景图像。但我不知道为什么,当我点击单元格1中的按钮时,它会改变背景,但单元格8中的按钮也会自动改变背景。有人知道吗?请帮帮我 -(void)clickLike:(UIButton*)sender { UIImage *curImg = sender.currentImage; UIImage

我是Objective-C的初学者。我有个问题。 我有一个20个单元格的tableview,每个单元格都有“名称”和“按钮”。我想当我点击单元格中的按钮时,该按钮将被更改为背景图像。但我不知道为什么,当我点击单元格1中的按钮时,它会改变背景,但单元格8中的按钮也会自动改变背景。有人知道吗?请帮帮我

    -(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];
        idUser=@"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];
        idUser=@"1";
        idSong=list.idsong;
        [self likeSong:idSong and:idUser];
    }
}

单元格#1中的按钮和单元格#8中的按钮是相同的UIButton对象,此方法中不存在问题。必须有两个按钮指向一个UIButton对象。检查创建按钮1和按钮8的代码

单元格#1中的按钮和单元格#8中的按钮是相同的UIButton对象,问题不在于此方法。必须有两个按钮指向一个UIButton对象。检查创建按钮1和按钮8的代码

谢谢你的评论。但我自定义单元格包括标签“name”和按钮“click”,然后在tableview中自动加载。这意味着相同的方法,相同的UIButton对象。我所说的有些武断,单元格1中的button和单元格8中的button不能是相同的UIButton对象,但我相信问题不在这个方法中,似乎clickLike方法在一次单击操作中对按钮1和按钮8调用了两次,所以请检查发生单击事件的代码。更重要的是,不要使用curImg==like和curImg==loke,UIImage缓存可能无效,并且会发生意外情况。最后,您是否注意到在“if”和“else-if”块中有相同的代码“sender.selected=TRUE;”似乎没有什么问题。在clickLike方法中尝试NSLog(sender.tag),您可以看到这个方法实际上被调用了两次。问题不仅在于第1单元和第8单元,还在于第2单元和第9单元。我认为它有默认距离。背景是自动更改的,但当我调用函数get row时,它只会精确显示我单击的行。>cell.btnLike.tag=indexPath.row;[cell.btnLike setImage:[UIImage ImageName:@“厌恶.png”]forState:UIControlStateNormal];[cell.btnLike addTarget:self action:@selector(clickLike:)for controlEvents:UIControlEventTouchUpInside];这很奇怪。我看不出代码中有任何错误。如果您不介意,请将您的项目发送到zhangbodut@gmail.com也许我可以试试。谢谢你的评论。但我自定义单元格包括标签“name”和按钮“click”,然后在tableview中自动加载。这意味着相同的方法,相同的UIButton对象。我所说的有些武断,单元格1中的button和单元格8中的button不能是相同的UIButton对象,但我相信问题不在这个方法中,似乎clickLike方法在一次单击操作中对按钮1和按钮8调用了两次,所以请检查发生单击事件的代码。更重要的是,不要使用curImg==like和curImg==loke,UIImage缓存可能无效,并且会发生意外情况。最后,您是否注意到在“if”和“else-if”块中有相同的代码“sender.selected=TRUE;”似乎没有什么问题。在clickLike方法中尝试NSLog(sender.tag),您可以看到这个方法实际上被调用了两次。问题不仅在于第1单元和第8单元,还在于第2单元和第9单元。我认为它有默认距离。背景是自动更改的,但当我调用函数get row时,它只会精确显示我单击的行。>cell.btnLike.tag=indexPath.row;[cell.btnLike setImage:[UIImage ImageName:@“厌恶.png”]forState:UIControlStateNormal];[cell.btnLike addTarget:self action:@selector(clickLike:)for controlEvents:UIControlEventTouchUpInside];这很奇怪。我看不出代码中有任何错误。如果您不介意,请将您的项目发送到zhangbodut@gmail.com也许我可以试试。谢谢你的评论。但我自定义单元格包括标签“name”和按钮“click”,然后在tableview中自动加载。这意味着相同的方法,相同的UIButton对象。我所说的有些武断,单元格1中的button和单元格8中的button不能是相同的UIButton对象,但我相信问题不在这个方法中,似乎clickLike方法在一次单击操作中对按钮1和按钮8调用了两次,所以请检查发生单击事件的代码。更重要的是,不要使用curImg==like和curImg==loke,UIImage缓存可能无效,并且会发生意外情况。最后,您是否注意到在“if”和“else-if”块中有相同的代码“sender.selected=TRUE;”似乎没有什么问题。在clickLike方法中尝试NSLog(sender.tag),您可以看到这个方法实际上被调用了两次。问题不仅在于第1单元和第8单元,还在于第2单元和第9单元。我认为它有默认距离。背景是自动更改的,但当我调用函数get row时,它只会精确显示我单击的行。>cell.btnLike.tag=indexPath.row;[cell.btnLike setImage:[UIImage ImageName:@“厌恶.png”]forState:UIControlStateNormal];[cell.btnLike addTarget:self action:@selector(clickLike:)for controlEvents:UIControlEventTouchUpInside];这很奇怪。我看不出代码中有任何错误。如果您不介意,请将您的项目发送到zhangbodut@gmail.com也许我可以试一试。