UITableViewCell按钮更改图像

时间:2015-07-31 13:10:42

标签: ios objective-c uitableview

在我的表格单元格中,我有这样的按钮

cell.btnAddFriend.tag = indexPath.row;
[cell.btnAddFriend addTarget:self action:@selector(addFollow:) forControlEvents:UIControlEventTouchUpInside];

当我点击按钮时,它必须调用函数addFollow:function,这个工作正常。

在addFollow函数中,根据条件我必须更改cell.btnAddFriend的图像

为此我使用此代码

[cell.btnAddFriend setImage:[UIImage imageNamed:@"icon_friend.png"]forState:UIControlStateNormal];

如果表中有一行,这样可以正常工作,如果表中有多行,则这不起作用,因为我没有传递必须更改按钮图像的索引路径中的值。

任何人都可以帮我解决如何通过函数设置表格单元格值。

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容 - 实际上是在addFollow

中获取了按钮
- (void) addFollow:(UIButton *)sender //this is, actually, button you tapper, so you don't worry which cell it is
{
     [sender setImage:[UIImage imageNamed:@"icon_friend.png"]forState:UIControlStateNormal];
}

但是,您应该考虑以下内容 - 如果在tableView:cellForRowAtIndextPath:中您重复使用的单元格比您可能看到的那样,您在单元格中的按钮上设置了这些图像,那么您实际上并没有轻拍。如果不是所有单元格都适合屏幕(可以将它们从可见性中滚出),这是可能的。在这种情况下,您应该保持状态,无论是否按下按钮。

一种方法。声明

@property NSMutableSet *buttonTagsTapped;

addFollow将更改

- (void) addFollow:(UIButton *)sender //this is, actually, button you tapped, so you don't worry which cell it is
{
      [sender setImage:[UIImage imageNamed:@"icon_friend.png"]forState:UIControlStateNormal];

      [self.buttonTagsTapped addObject:[NSNumber numberWithInt:sender.tag]];
}

您在哪里创建单元格

cell.btnAddFriend.tag = indexPath.row;
if([self.buttonTagsTapped containsObject:[NSNumber numberWithInt:sender.tag]]) {
    [cell.btnAddFriend setImage:[UIImage imageNamed:@"icon_friend.png"]forState:UIControlStateNormal];
}