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 与单元格的索引谁的按钮被点击的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 swift 填充我放置在 UITableCell 中的整个 UIScrollView
在自定义 UITableCell 中从 UITextField 调用 textFieldShouldReturn 时遇到问题