自定义UITableViewCell按钮

时间:2011-09-19 03:02:33

标签: iphone uitableview

我将UITableViewCell子类化并添加了一个按钮。触摸按钮时如何响应事件?我还需要知道按下按钮的索引路径。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"CustomTableCell";

    CustomTableCell *cell = (CustomTableCell *)
    [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        NSArray *topLevelObjects = [[NSBundle mainBundle]
                                    loadNibNamed:@"CustomTableCell"
                                    owner:nil options:nil];
        for (id currentObjects in topLevelObjects){
            if ([currentObjects isKindOfClass:[StatusTableCell class]]){
                cell = (StatusTableCell *) currentObjects;
                break;
            }
        }                           
    }
    cell.customButton.tag = indexPath.row;
    return cell;
}

2 个答案:

答案 0 :(得分:4)

如果您在UITableViewCell子类中添加了UIButton代码,则可以使用以下代码为其添加操作。

//In UITableViewCell subclass
    [customButton addTarget:self 
               action:@selector(aMethod:)
     forControlEvents:UIControlEventTouchDown];

然后您已经通过设置

编写了访问行号的代码
 cell.customButton.tag = indexPath.row;

您可以在aMethod中获取标记值并访问indexPath.row值,如下所示,

//In UITableViewCell subclass
    -(IBAction)aMethod:(UIButton*)button
    {
        NSLog(@"indexPath.row value : %d", button.tag);
    }

答案 1 :(得分:2)

您可以在CustomTableCell Nib中分配IBAction,并在函数中执行以下操作:

- (IBAction) btnDoSomethingPressed:(id)sender {
    NSIndexPath *indexPath = [yourTableView indexPathForCell:(UITableViewCell *)[[sender superview] superview]];
     //Use indexPath (or indexPath.row) like you would in a UITableViewDelegate method 
}

这假定yourTableView是分配给表的实例变量。