如何在UITableView上选择单个按钮

时间:2014-01-10 13:51:55

标签: ios objective-c

我在UITableView中遇到问题,因为我需要在tableview的每一行上放置一个按钮,如果我单击该按钮,它会一次被选中并且选择就像切换一样。如何实现这一点,请帮我解决这个问题。

以下是我试图解决的代码。我正在cellForRowAtIndexPath创建按钮,如下所示:

UIButton  *Btn = [[UIButton alloc]init];
Btn .frame = CGRectMake(3, 10, 33, 30);
[Btn setImage:[UIImage imageNamed:@"deselect.png"] forState:UIControlStateNormal];
[Btn addTarget:self action:@selector(method:) forControlEvents:UIControlEventTouchUpInside];
Btn.tag=indexPath.row;
[cell.contentView addSubview:Btn];

method:按钮操作:

-(void)method:(UIButton*)sender
{

     NSIndexPath  *indexpath1 = [NSIndexPath indexPathForRow:sender.tag inSection:0];

     Btn = (UIButton *)sender;

    //Btn.tag=sender.tag;
    [Btn setImage:[UIImage imageNamed:@"select.png"] forState:UIControlStateNormal];

}

2 个答案:

答案 0 :(得分:1)

您有一个数组来存储是否选择了单元格的按钮。在cellForRowAtIndexPath方法中,您应为按钮的2个状态UIControlStateNormalUIControlStateSelected设置2个图像:

[Btn setImage:[UIImage imageNamed:@"select.png"] forState:UIControlStateSelected];
[Btn setImage:[UIImage imageNamed:@"deselect.png"] forState:UIControlStateNormal];

然后在method:函数中,根据数组中的值,通过Btn.selected切换按钮的状态。

答案 1 :(得分:0)

UIImage * btnLinkNormal = [UIImage imageNamed:@"select.png"];
[cell.linkButton setImage:btnLinkNormal forState:UIControlStateNormal];

// Add image to button for pressed state
UIImage * btnLinkHighlighted = [UIImage imageNamed:@"deselect.png"];
[cell.linkButton setImage:btnLinkHighlighted forState:UIControlStateHighlighted];