ios - 为 TableView 中的单元格获取行触摸 UILabel

标签 ios swift uitableview swift3 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
}

和 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/

相关文章:

ios - Swift - 核心数据被覆盖

ios - 重新加载数据后更改 UIButton 文本

ios - 如何获得 subview 在我的 UITableViewCell 中相对于整个窗口的位置?

swift - 在 Swift5 中实现多个 TableView 时可以吗?

ios - 性能 : UIImage vs UIView

ios - Swift 如何在堆栈 View 中调整图像大小

ios - XCode 9 在项目之间切换

html - 在 iPad 中边距居中的按钮向左移动

ios - 使用 didHighlightItemAtIndexPath 实例化自定义 UICollectionViewCell

ios - 如何从 TableSource 修改 TableViewCell 内的 UIButton?