0

可能重复:
检测在 UITableView 中按下了哪个 UIButton

我有一个 UIButton 添加到 UITableViewCell 我希望这个按钮调用我已经知道调用的“didSelectRowAtIndexPath”

  [self tableView:self.tableView didSelectRowAtIndexPath:indexpath];

但是我无法获取索引路径并尝试了的问题

[self.Tableview indexPathForRowAtPoint:[self.view convertPoint:[sender center] fromView:self.Tableview]]

方法,但它返回相同的 CGPoint ,有什么帮助吗?

4

2 回答 2

4

首先,你不应该直接给didSelectRowAtIndexPath自己打电话。它是一个委托方法,表视图应该调用它。

相反,创建一个单独的方法来做你想做的事情,然后从didSelectRowAtIndexPath.

其次,您可以像这样获取索引路径:

UIButton* button = (UIButton*) sender;
UITableViewCell *cell = (UITableViewCell*)button.superview.superview;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];

这是可行的,因为如果一切都以标准方式设置,则按钮的超级视图应该是单元格的contentView,并且应该是单元格的子视图。

于 2012-08-14T11:22:28.243 回答
0

根据我的说法,最好的方法是给ROW NUMBER AS TAG VALUE FOR tableViewCell' button,所以当你点击按钮时,它的动作将被调用,你会从中得到发件人 id sender_id 只不过是 UIButton 实例,获取它的标签值..

例如:你有 UIButton *testButton;
它的选择器是@selector (testButtonPressed:)

所以当tableViewCell的Button被按下时,它会调用@selector (testButtonPressed:)

-(void)testButtonPressed:(id)sender
 {
     NSLog(@"index is %d", sender. tag);
 }
于 2012-08-14T11:43:12.930 回答