UITableCell内的按钮 - 将数据传递给选择器

时间:2013-10-30 10:34:10

标签: ios uitableview selector

这个主题遍布堆栈溢出,但我找不到合适的解决方案。

我在每个UITableViewCell都有按钮。

以下是我创建单元格的方法。

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ExaminationCell"];
    UIButton *clipButton = (UIButton *)[cell viewWithTag:3];

    MedicalExamination *examination = [objects objectAtIndex:indexPath.row];

    [clipButton addTarget:self action:@selector(examinatonClicked:) forControlEvents:UIControlEventTouchUpInside];

    return cell;
}

以下是处理按钮点击的方法:

-(void)examinatonClicked:(MedicalExamination*)examination
{

}

如何将检查对象传递给examinatonCommentsClicked方法?显然每个细胞的对象都不同......

2 个答案:

答案 0 :(得分:3)

我会做的有点hacky,我将使用UIButton的tag属性来传递行号,这样我就可以从支持我的表的数组中拉出对象。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"ExaminationCell"];
    UIButton *clipButton = (UIButton *)[cell viewWithTag:3];
    clipButton.tag = indexPath.row //Set the UIButton's tag to the row.

    MedicalExamination *examination = [objects objectAtIndex:indexPath.row];

    [clipButton addTarget:self action:@selector(examinatonClicked:) forControlEvents:UIControlEventTouchUpInside];

    return cell;
}

-(void)examinatonClicked: (id)sender
{
     int row = ((UIButton *)sender).tag;
     MedicalExamination *examination = [objects objectAtIndex: row];
     //Profit!
}

答案 1 :(得分:-1)

我认为您必须在uitableviewCellxib(custum cell)添加按钮,然后通过iboutlet进行连接。