iPhone - 从自定义单元格捕获 UIButton 触摸事件

发布于 2024-11-09 08:14:28 字数 73 浏览 0 评论 0原文

我想构建一个自定义表视图单元格并在其中放入一个按钮,当用户单击该按钮转到方法时,该方法将知道按下了哪个单元格。

谢谢

i would like to build a custom table view cell and put in him a button and when the user click the button to go to a method-and the method will know which cell the button was pressed.

thx

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

慕烟庭风 2024-11-16 08:14:28
- (void) cellButtonClicked: (id) sender 
{
  UIButton *btn = (UIButton *) sender;
  UITableViewCell *cell = (UITableViewCell *) [[btn superview] superview];
  NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
  //do something with indexPath...
}

希望这个工作

- (void) cellButtonClicked: (id) sender 
{
  UIButton *btn = (UIButton *) sender;
  UITableViewCell *cell = (UITableViewCell *) [[btn superview] superview];
  NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
  //do something with indexPath...
}

Hope this work

驱逐舰岛风号 2024-11-16 08:14:28

您可以给按钮一个标签。如果将此标记设置为单元格的数量indexPath.row,您始终可以通过检索标记值来确定从哪个单元格单击按钮。

顺便说一句,按钮标签必须是整数,但 sow 是indexPath.row。

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    Huis *h = [woningen objectAtIndex:indexPath.row];
    static NSString *identifier = @"Woning";
    WoningTableCell *cell = (WoningTableCell *)[tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[[WoningTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
    }
    [cell setNewWoning:h withIndex:indexPath.row];
    return cell;
}

在这里,我创建了一个自定义单元格,显示“Huis”的详细信息。当为单元格设置对象时,我还传递了我正在填充的单元格的indexPath.row。

然后在自定义单元格中,在设置对象时,我还为按钮设置了标签值,如下所示:

UIButton *indexBtn = [UIButton .... ];
indexBtn.tag = indexRowInteger;

该按钮可能已经创建/初始化,在这种情况下,您只需设置标签。现在,在处理 ControlEvent 的函数中,您可以像这样访问此标记:

- (void) CellButtonPressed: (id) sender{

UIButton *b = ((UIButton *)sender);
NSInteger tagValue = btn.tag;

}

You can give the button a tag. If you set this tag to be the number of the cells indexPath.row you can always determine from which cell the button was clicked by retrieving the tag Value.

Button tag has to be an integer btw, but sow is indexPath.row.

// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    Huis *h = [woningen objectAtIndex:indexPath.row];
    static NSString *identifier = @"Woning";
    WoningTableCell *cell = (WoningTableCell *)[tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        cell = [[[WoningTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier] autorelease];
    }
    [cell setNewWoning:h withIndex:indexPath.row];
    return cell;
}

Here I create a custom cell displaying details of a 'Huis'. When setting the object for the cell I also pass the indexPath.row of the cell that I am filling.

Then in the custom cell, upon setting the object, I also set the tag value for my button like this:

UIButton *indexBtn = [UIButton .... ];
indexBtn.tag = indexRowInteger;

The button might have already been created / initialized, in that case you only set the tag. Now in the function handling your ControlEvent you can access this tag like so:

- (void) CellButtonPressed: (id) sender{

UIButton *b = ((UIButton *)sender);
NSInteger tagValue = btn.tag;

}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文