如何知道单元格的indexPath SWIFT

8 浏览
0 Comments

如何知道单元格的indexPath SWIFT

我有一个自定义的tableview。它包含一个button。问题是如何知道哪个按钮被点击?从哪个indexPath.row。我尝试在didSelectRowAt中实现,但是我没有选择任何单元格,我只是按下button。我需要用SWIFT实现。

0
0 Comments

在Swift中,要知道单元格的indexPath有多种方法。下面是一种常见的方法:

1. 首先,获取包含按钮的单元格:

let btn = /* your button */

guard let cellContainingBtn = btn.superview as? UITableViewCell else {

return

}

2. 然后,获取包含单元格的UITableView:

guard let tbl = cellContainingBtn.superview as? UITableView else {

return

}

3. 最后,使用`indexPathForCell`方法获取单元格的indexPath:

guard let cellIndexPath = tbl.indexPath(for: cellContainingBtn) else {

return

}

4. 如果你只需要行号,可以使用`row`属性获取行号:

let index = cellIndexPath.row

这样,你就可以知道按钮所在单元格的indexPath了。

另外,这个问题也在Stack Overflow上得到了解答,你可以点击以下链接查看:

[Get row index of custom cell in UITableview](https://stackoverflow.com/questions/13723785)

作为一种简单的替代方法,你还可以将单元格的indexPath.row赋值给按钮的`accessibilityLabel`或`accessibilityHint`等属性。这样,你就可以通过按钮的这些辅助属性获取行号了。

0
0 Comments

下面的代码将为您提供按钮标签,并知道哪个按钮被点击。将此代码正确放置在cellForRowAtIndexPath UITableView数据源代理方法中。

cell.btn.tag = indexPath.row

cell.btn.addTarget(self, action: #selector(btnTapped(_:)), for: .touchUpInside)

func btnTapped(_ sender : UIButton) {

print(sender.tag)

}

你能告诉我btn是什么吗?

btn是您的UIButton。

它应该是action还是outlet?

所以将btn替换为btnTapped。

是的,它有效。谢谢伙计。

不客气,兄弟。

0