在TableView

时间:2016-12-13 12:59:25

标签: ios swift uitableview swift3 uilabel

同事们,当我在UILabel的单元格中按UITableView时,我遇到了排队的问题。 所以,我有

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时,我看到" Hello world",但我希望在{{{{找到了1}}。我可以获得一行按下的单元格,但用户可能只按UILabel而不按UILabel未激活的单元格部分。 谢谢你的想法!

2 个答案:

答案 0 :(得分:2)

1)您可以使用UIView的标记属性。只需将标记添加到labelChangeSomething方法

中的cellForRowAtIndexPath即可
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)")
  }

}

答案 1 :(得分:0)

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

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

TableViewDelegate并将此代码写入其中。

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