【问题标题】:Adding a Tap Gesture Recognizer to TableViewCell.swift向 UITableViewCell.swift 添加点击手势识别器
【发布时间】:2016-08-26 23:52:48
【问题描述】:

我有一个表格视图单元格,其中包含我附加了一个点击手势识别器的图像。

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

当我尝试 ctrl 并将 Tap Gesture Recognizer 拖动到 TableViewCellControllerTableViewCell 文件或任何其他文件时,它不会让我这样做。

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

TableViewCellTableViewCellController 文件都有其默认代码。

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

【问题讨论】:

  • 你需要交换单元格菜单吗?
  • @NinjaDeveloper 我不确定。我不知道那会达到什么效果。在点击图像时,它将为表格单元格中类的 Int 属性添加 +1。
  • @Weirdali 看起来您只需要一个带有图像的按钮。只需使用您的按钮创建一个自定义单元并将您的按钮插座连接到自定义单元

标签: ios swift uitableview


【解决方案1】:

对于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!")
}

【讨论】:

  • 您说我不能将 UITapGesture 添加到原型单元格 - 但它不会始终是原型单元格?我想以与单个视图相同的方式向表格单元格添加功能 - 这涉及点击单元格的某些部分,而不是整个部分。所以看起来 didSelectRowAtIndexPath 不会做我想做的事。对不起,如果我误解了你。
  • 你的意思是 return cell 而不是 return UITableViewCell() 吗?
  • @Weirdali at storyboard,UITableViewCell 将是一个原型,因为它可能有数千甚至数百万行,所以它被重用而不是每次都创建一个新的。如果要添加到某些视图,可以修改 cellForRowAtIndexPath。我已经为你更新了。
猜你喜欢
  • 1970-01-01
  • 2021-09-27
  • 2019-03-27
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 2016-09-08
  • 2019-06-20
相关资源
最近更新 更多