UITableCell 按钮 touchUpInside 与单元格的索引谁的按钮被点击

Posted

技术标签:

【中文标题】UITableCell 按钮 touchUpInside 与单元格的索引谁的按钮被点击【英文标题】:UITableCell button touchUpInside with index of cell whos button was clicked 【发布时间】:2014-01-17 20:44:45 【问题描述】:

我有一个带有 UITableCells 的 UITable,如下所示:

[我的标签我的按钮]

[我的标签我的按钮]

[我的标签我的按钮]

[我的标签我的按钮]

我希望我的 handlerCellButtonClicked 也能获得对单元格索引的引用。当按钮被触摸时,我怎样才能获得对这个索引的引用?

/** called by table to get the cell needed by the index */
-(UITableViewCell*)tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    ...
    //init cell
    ...
    //configure the cells custom button handlers
    [cell.myButton addTarget:self action:@selector(handlerCellButtonClicked) forControlEvents:UIControlEventTouchUpInside];

    return cell;


/** handler when the button in the cell is clicked */
- (void)handlerCellButtonClicked
    NSLog(@"cell myButton clicked");

【问题讨论】:

Detecting which UIButton was pressed in a UITableView的可能重复 【参考方案1】:

利用UIButton Tag 属性。

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

    //init cell
    //configure the cells custom button handlers

    cell.myButton.tag = indexPath.row;
    [cell.myButton addTarget:self action:@selector(handlerCellButtonClicked:) forControlEvents:UIControlEventTouchUpInside];

    return cell;


/** handler when the button in the cell is clicked */
- (void)handlerCellButtonClicked:(UIButton *)sender
  
     NSLog(@"%d cell myButton is clicked", sender.tag);
  

【讨论】:

你如何确定选择器会通过发件人? (handlerCellButtonClicked:) 应该将发送者传递给目标,对吧? 您只能使用 addTarget @selector 方法将 (UIButton*) 对象作为参数传递。就是这样。此外,“UIControlEventTouchUpInside”事件会将按钮作为参数发送。希望您理解。 @Ramshad:这很好用,在方法发送 UIButton 之后添加冒号 @selector(handlerCellButtonClicked:) ,我可以获得标签。我遇到的问题是,如果我删除行,则标签不正确,因为索引已更改。但我可以将此作为另一个问题发布。感谢您的帮助。 @Ramshad 标签必须是 NSInteger 还是可以是任何对象?

以上是关于UITableCell 按钮 touchUpInside 与单元格的索引谁的按钮被点击的主要内容,如果未能解决你的问题,请参考以下文章

UITableCell 显示不正确的内容

如何使用 swift 填充我放置在 UITableCell 中的整个 UIScrollView

iPhone 开发:滑动 UITableCell

UITableCell 相关

UITableCell 高度未正确调整

在自定义 UITableCell 中从 UITextField 调用 textFieldShouldReturn 时遇到问题