UITableViewCell
包含UIButton
。
在我的 cellForRowAtIndexPath :
中cell.toCartBtn.tag = indexPath.row;
[cell.toCartBtn addTarget:self
action:@selector(toCart:) forControlEvents:UIControlEventTouchDown];
在 toCart 方法中,我需要通过点击按钮标记获取行和部分。我该怎么办?
答案 0 :(得分:10)
请参阅此代码
- (void)toCart:(id)sender
{
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
if (indexPath)
{
...
}
}
答案 1 :(得分:2)
如果UIButton是单元格中的子视图
,请使用此简单代码- (void)toCart:(id)sender
{
UIButton *senderButton = (UIButton *)sender;
UITableViewCell *cell=(UITableViewCell*)senderButton.superView;
NSIndexPath *index = [tableView indexPathForCell:cell];
}
答案 2 :(得分:0)
创建一个自定义的UITableViewCell子类并处理那里的触摸。
然后为自定义表格视图单元格定义委托,并在创建单元格时,将表格视图数据源指定为委托。
当单元格处理触摸时,向委托发送消息,然后从表格视图中找到索引路径。
-(void)customTableViewCellButtonPressed:(CustomTableViewCell *)cell {
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
...
}
答案 3 :(得分:0)
试试这个:
- (void)toCart:(id)sender {
CGPoint button1 = [sender convertPoint:CGPointZero toView:self.tblName];
NSIndexPath *index = [self.tableView indexPathForRowAtPoint:button1];
//use index variable
}
还可以查看有关您的错误的详细信息......
答案 4 :(得分:0)
对于Swift
let buttonPosition:CGPoint = sender.convert(CGPoint.zero, to: self.tableViewItems)
let indexPath = self.tableViewItems.indexPathForRow(at: buttonPosition)
if (indexPath != nil)
{
print(indexPath?.section)
print(indexPath?.row)
}