1

UITableViewCell哪些包含UIButton.

在我的cellForRowAtIndexPath中:

cell.toCartBtn.tag = indexPath.row;
[cell.toCartBtn addTarget:self
           action:@selector(toCart:) forControlEvents:UIControlEventTouchDown];

toCart方法中,我需要通过点击按钮标签来获取行和部分。我该怎么做?

4

5 回答 5

10

看到这个代码

- (void)toCart:(id)sender
{
    CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
    NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
    if (indexPath)
    {
     ...
    }
}
于 2013-07-12T05:57:00.240 回答
2

如果 UIButton 是单元格中的子视图,请使用此简单代码

- (void)toCart:(id)sender 
{
UIButton *senderButton = (UIButton *)sender;
UITableViewCell *cell=(UITableViewCell*)senderButton.superView;
NSIndexPath *index = [tableView indexPathForCell:cell];
}
于 2013-07-12T06:31:38.097 回答
0

创建一个自定义 UITableViewCell 子类并在其中处理触摸。

然后为您的自定义表格视图单元格定义一个委托,当您创建单元格时,将您的表格视图数据源分配为委托。

当单元格处理触摸时,向委托发送消息,然后从表格视图中找到索引路径。

-(void)customTableViewCellButtonPressed:(CustomTableViewCell *)cell {
    NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
    ...
}
于 2013-07-12T06:01:52.910 回答
0

尝试这个:

- (void)toCart:(id)sender {
    CGPoint button1 = [sender convertPoint:CGPointZero toView:self.tblName];
    NSIndexPath *index = [self.tableView indexPathForRowAtPoint:button1];

    //use index variable
}

并查看有关您的错误的更多详细信息...

检测在 UITableView 中按下了哪个 UIButton

于 2013-07-12T06:01:59.903 回答
0

对于斯威夫特

    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)
    }
于 2018-08-28T10:32:34.397 回答