有UITableViewCell
哪些包含UIButton
.
在我的cellForRowAtIndexPath中:
cell.toCartBtn.tag = indexPath.row;
[cell.toCartBtn addTarget:self
action:@selector(toCart:) forControlEvents:UIControlEventTouchDown];
在toCart方法中,我需要通过点击按钮标签来获取行和部分。我该怎么做?
有UITableViewCell
哪些包含UIButton
.
在我的cellForRowAtIndexPath中:
cell.toCartBtn.tag = indexPath.row;
[cell.toCartBtn addTarget:self
action:@selector(toCart:) forControlEvents:UIControlEventTouchDown];
在toCart方法中,我需要通过点击按钮标签来获取行和部分。我该怎么做?
看到这个代码
- (void)toCart:(id)sender
{
CGPoint buttonPosition = [sender convertPoint:CGPointZero toView:self.tableView];
NSIndexPath *indexPath = [self.tableView indexPathForRowAtPoint:buttonPosition];
if (indexPath)
{
...
}
}
如果 UIButton 是单元格中的子视图,请使用此简单代码
- (void)toCart:(id)sender
{
UIButton *senderButton = (UIButton *)sender;
UITableViewCell *cell=(UITableViewCell*)senderButton.superView;
NSIndexPath *index = [tableView indexPathForCell:cell];
}
创建一个自定义 UITableViewCell 子类并在其中处理触摸。
然后为您的自定义表格视图单元格定义一个委托,当您创建单元格时,将您的表格视图数据源分配为委托。
当单元格处理触摸时,向委托发送消息,然后从表格视图中找到索引路径。
-(void)customTableViewCellButtonPressed:(CustomTableViewCell *)cell {
NSIndexPath *indexPath = [self.tableView indexPathForCell:cell];
...
}
尝试这个:
- (void)toCart:(id)sender {
CGPoint button1 = [sender convertPoint:CGPointZero toView:self.tblName];
NSIndexPath *index = [self.tableView indexPathForRowAtPoint:button1];
//use index variable
}
并查看有关您的错误的更多详细信息...
对于斯威夫特
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)
}