0

我在单元格中有一个带有 UIButton 的表格视图。

我在 didSelectRowAtIndexPath 中创建了一些功能。我想要的是当用户也点击按钮时运行相同的功能/方法。

如何使 buttonPressed 方法运行 didSelectRowAtIndexPath?

如果我不能这样做,我可以将功能移动到一个新方法并让两者都调用这个新方法。但是,如何从按下按钮的方法中获取单元格 indexPath?

4

3 回答 3

0
  1. 找到UITableViewCell包含按钮的对象(必须是它的容器视图之一,只需向上查看超级视图链)。
  2. 找到 indexPath [UITableView indexPathForCell:]
于 2013-07-04T18:36:04.677 回答
0
-(IBAction)playButtonPressed:(id)sender {
    NSLog(@"button pressed");
    UIButton *button = (UIButton *)sender;
    UITableViewCell *cell = (UITableViewCell *)button.superview.superview;
    UITableView *curTableView = (UITableView *)cell.superview;
    NSIndexPath *indexPath = [curTableView indexPathForCell:cell];

    [self didSelectRowOrButtonAtIndexPath:indexPath];
}

我创建了一个新方法 didSelectRowOrButtonAtIndexPath 并从 buttonPressed 和 didSelectRowAtIndexPath 调用它,并传入要在我的方法中使用的 indexpath。

于 2013-07-04T18:54:20.140 回答
0

在您的cellForRowAtIndexPath, 分配indexPath.row给您的按钮tag(假设您只需要该行 - 想法是以indexPath某种方式将 附加到按钮,tag这只是一种方法)。

-(UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath {

    // Init / Reuse the cell ...

    cell.button.tag = indexPath.row;

    return cell;
}

-(void)buttonPressed:(UIButton*)button {
    [self method:button.tag];
}
于 2013-07-05T00:03:55.163 回答