获取表视图中单元格的行触摸 UILabel



同事们,当我在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
}

和操作功能:

func tapFunction(sender:UITapGestureRecognizer) {
print("Hello world")
}

我想得到一行按下的UILabel(当我按下UILabel时,我看到"你好世界",但我想看到UILabel所在的行。我可以得到一行按下的单元格,但用户只能按UILabel,而不要按UILabel未激活的单元格的一部分。 感谢您的想法!

1)你可以利用UIView的标签属性。只需在方法中添加标签即可cellForRowAtIndexPathlabelChangeSomething

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)")
}
}

当您点击单元格中的标签时,您不需要UITapGestureRecognizer单击该单元格时,您需要调用

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)

TableViewDelegate并在其中编写此代码。

let cell = tableView.cellForRow(at: IndexPath) as? CellOfFirstTableView

最新更新