繁体   English   中英

UITableViewCell按钮更改图像

[英]UITableViewCell button change image

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

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

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

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

为此,我正在使用此代码

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

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

谁能帮助我如何通过函数设置表格单元格的值。

您可以使用以下命令-您实际上在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];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM