同事们,当我在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
未激活的单元格部分。
谢谢你的想法!
答案 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