同事们,当我在 UITableView
的单元格中按下 UILabel
时,我遇到了获取行的问题。
所以,我有
class CellOfFirstTableView: UITableViewCell
我在哪里
@IBOutlet weak var labelChangeSomething: UILabel!
在我工作的那个牢房里
class FirstTableViewController: UITableViewController
所以我想获取按下的 UILabel
的行,但我不知道该怎么做。我的单元格代码和新闻操作:
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "firstCell", for: indexPath) as! CellOfFirstTableView
let list = sortOfSomething(id: id_something)[indexPath.row]
//tapRecognizer
let tap = UITapGestureRecognizer(target: self, action: #selector(FirstTableViewController.tapFunction))
cell.labelChangeSomething.isUserInteractionEnabled = true
cell.labelChangeSomething.addGestureRecognizer(tap)
return cell
}
和 Action 函数:
func tapFunction(sender:UITapGestureRecognizer) {
print("Hello world")
}
我想获取按下的 UILabel
行(当我按下 UILabel
时,我看到“Hello world”,但我想查看 中的行UILabel
位于。我可以获得按下的单元格行,但用户可以只按下 UILabel
而不要按下 UILabel
未激活的部分单元格。
感谢您的想法!
最佳答案
1)您可以使用UIView
的标记属性。只需将标记添加到 cellForRowAtIndexPath
方法中的 labelChangeSomething
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "firstCell", for: indexPath) as! CellOfFirstTableView
let list = sortOfSomething(id: id_something)[indexPath.row]
//tapRecognizer
let tap = UITapGestureRecognizer(target: self, action: #selector(FirstTableViewController.tapFunction))
cell.labelChangeSomething.isUserInteractionEnabled = true
cell.labelChangeSomething.addGestureRecognizer(tap)
//here added tag
cell.labelChangeSomething.tag = indexPath.row
return cell
}
2) 像下面这样更新你的选择器方法
func tapFunction(sender:UITapGestureRecognizer) {
if let label = sender.view as? UILabel {
//print label tag here == indexpath.row
print("row = \(label.tag)")
}
}
关于ios - 为 TableView 中的单元格获取行触摸 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41121752/