将Tap Gesture识别器添加到TableViewCell.swift

时间:2016-08-26 15:06:09

标签: ios swift uitableview

我有一个带有图像的表格视图单元格,我附加了一个Tap Gesture Recognizer。

Table View中原型TableViewCell的图像,带有两个标签和一个图像。顶部有Tap Gesture Recognizer徽标:

enter image description here

当我尝试按住Ctrl并将Tap Gesture Recognizer拖动到TableViewCellControllerTableViewCell文件或任何其他文件时,它不会让我。

但是,在我的另一个不是表视图的视图中,我可以让它工作正常。我是Swift的新手。有谁知道为什么会发生这种情况,以及我可以做些什么来帮助它(我知道我可以使用按钮代替,但我不会从中学到任何东西)?

TableViewCellTableViewCellController文件都有默认代码。

编辑:我想要的是让用户能够点击图片以将+1添加到表格单元格中的类中的Int属性。该类中的一个UILabel和单元格已更新。这是我在常规视图中可以毫无问题地实现并希望在表视图中实现的行为。

1 个答案:

答案 0 :(得分:6)

对于UITableViewCell,您无法通过情节提要向其添加UITapgesture,因为它只是一个与其他人不同的原型单元格。如果你真的想这样做,你可以在代理中以编程方式执行此操作:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = self.tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell
    let tapGesture = UITapGestureRecognizer(target: self, action: "SomeMethod")
    cell.myImageView.addGestureRecognizer(tapGesture)

    return cell
}

但我无法找出你想要这样做的原因。如果您只是想要在点击单元格时执行某些操作或调用某些功能,则应使用didSelectRowAtIndexPath

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    print("cell at #\(indexPath.row) is selected!")
}