addTarget:action:forControlEvents:你可以传递字典或任何东西

时间:2011-11-17 22:12:38

标签: iphone

我有一个UITableView的自定义单元格。单元格中有一个名为ShowData的按钮。我为该按钮添加了一个选择器:

[cell.ShowData addTarget:self action:@selector(ShowData:) forControlEvents:UIControlEventsTouchUpInside];

在My ShowData:方法中,我想要一些用于显示单元格的信息。我怎样才能以这种方式传递信息?感谢。

2 个答案:

答案 0 :(得分:0)

您的showData:将收到按钮本身作为其sender参数。您可以按下按钮的超级视图,直到找到自定义单元格,然后访问您添加到单元格中的任何属性。

- (IBAction)showData:(id)sender
{
    while (sender && ![sender isKindOfClass:[MyCustomTableViewCell class]])
        sender = [sender superview];
    if (!sender) {
        // error
    }

    MyCustomTableViewCell *cell = sender;
    // do stuff using cell
}

答案 1 :(得分:0)

在这种情况下,我通常将按钮子类化并添加一个ivar以使用UITableViewCell识别它。

例如,您可以使用两个NSInteger属性buttonIndex和buttonSection来标识按钮所在的tableview的部分和行。

在cellForRowAtIndexPath中构造单元格时,可以将indexPath.row分配给buttonIndex,将indexPath.section分配给buttonSection。

现在,在showData方法中,只需将发件人作为自定义按钮读取,然后访问这些属性:)

编辑:

如果你正在使用单个部分tableview,你可以简单地设置button.tag = indexPath.row。 UIButton继承自UIView,它具有专门用于此目的的标记属性。