我在UITableViewCell中添加了一个UIButton 我希望这个按钮调用我已经知道的关于调用
的“didSelectRowAtIndexPath” [self tableView:self.tableView didSelectRowAtIndexPath:indexpath];
但问题是我无法获取indexpath并尝试了
[self.Tableview indexPathForRowAtPoint:[self.view convertPoint:[sender center] fromView:self.Tableview]]
方法,但它返回相同的CGPoint,任何帮助?
答案 0 :(得分:4)
首先,您不应该直接致电didSelectRowAtIndexPath
。它是一个委托方法,表视图应该调用它。
相反,请创建一个单独的方法来执行您想要执行的操作,并从didSelectRowAtIndexPath
调用该方法。
其次,您可以像这样获取索引路径:
UIButton* button = (UIButton*) sender;
UITableViewCell *cell = (UITableViewCell*)button.superview.superview;
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
这是有效的,因为如果所有内容都以标准方式设置,则按钮的超级视图应该是单元格的contentView
,这应该是单元格的子视图。
答案 1 :(得分:0)
根据我的最佳方式是给 ROW NUMBER AS TAG VALUE FOR tableViewCell'按钮, 因此,当您点击按钮时,将调用其操作,您将从中获取发件人ID sender_id只是UIButton实例,获取其标记值..
例如:你有UIButton * testButton;
它的选择器是@selector(testButtonPressed :)
因此,当按下tableViewCell的Button时,它将调用@selector(testButtonPressed :)
-(void)testButtonPressed:(id)sender
{
NSLog(@"index is %d", sender. tag);
}