如何知道单元格的indexPath SWIFT
在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`等属性。这样,你就可以通过按钮的这些辅助属性获取行号了。
下面的代码将为您提供按钮标签,并知道哪个按钮被点击。将此代码正确放置在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。
是的,它有效。谢谢伙计。
不客气,兄弟。