如何知道在哪个tableview单元格被触摸了?

我在我的tableView自定义tableViewCells。 他们有两个或两个以上的ImageViews在单元格内,可以被触摸,然后他们将反弹并被选中。 但是由于单元格正在被重用,我怎么知道在哪个行中select了哪个ImageView? 我知道我可以得到indexPath.row,但我怎么知道2或3图像中的哪一个触发了函数给我indexPath? 希望你们明白我的意思。 这是我的自定义tableViewCell,tableView代码只是标准。

import UIKit class TwoPicsTableViewCell: UITableViewCell { @IBOutlet var containerView: UIView! @IBOutlet var votesButton: UIButton! @IBOutlet var commentsButton: UIButton! @IBOutlet var firstImage: bouncingRoundImageView! @IBOutlet var secondImage: bouncingRoundImageView! @IBOutlet var titleLabel: UILabel! @IBOutlet var descriptionLabel: UILabel! @IBOutlet var topUsernameLabel: UILabel! @IBOutlet var bottomUsernameLabel: UILabel! override func awakeFromNib() { super.awakeFromNib() // Initialization code //self.layoutIfNeeded() containerView.layer.cornerRadius = 10 containerView.clipsToBounds = true self.backgroundColor = ColorScheme.primaryColor votesButton.setTitleColor(ColorScheme.fourthColor, for: UIControlState()) commentsButton.setTitleColor(ColorScheme.fourthColor, for: UIControlState()) setupBackgroundGradient() setupFirstImage() setupSecondImage() } func setupBackgroundGradient() { let bottomColor = ColorScheme.secondaryColor.cgColor let topColor = ColorScheme.thirdColor.cgColor let layer = CAGradientLayer() layer.frame = containerView.frame layer.frame.offsetBy(dx: -10,dy:-10) layer.frame.size.width += 10 layer.frame.size.height += 10 layer.colors = [topColor, bottomColor] containerView.layer.insertSublayer(layer, at: 0) } func setupFirstImage() { let tappedOne = UITapGestureRecognizer(target: self, action: #selector(checkPicTwo)) firstImage.addGestureRecognizer(tappedOne) } func setupSecondImage() { let tappedTwo = UITapGestureRecognizer(target: self, action: #selector(checkPicOne)) secondImage.addGestureRecognizer(tappedTwo) } func checkPicTwo() { firstImage.bouncing() vote(voteForPic: firstImage) if secondImage.layer.borderWidth != 0 { secondImage.layer.borderWidth = 0 } } func checkPicOne() { secondImage.bouncing() if firstImage.layer.borderWidth != 0 { firstImage.layer.borderWidth = 0 } } override func prepareForReuse() { super.prepareForReuse() firstImage.image = nil secondImage.image = nil firstImage.layer.borderWidth = 0 secondImage.layer.borderWidth = 0 } } 

 protocol TwoPicsTableViewCellDelegate{ func image1Clicked(cell:TwoPicsTableViewCell) func image2Clicked(cell:TwoPicsTableViewCell) } class TwoPicsTableViewCell: UITableViewCell { var delegate:TwoPicsTableViewCellDelegate! func checkPicTwo() { firstImage.bouncing() vote(voteForPic: firstImage) if secondImage.layer.borderWidth != 0 { secondImage.layer.borderWidth = 0 } //delegate call delegate.image1Clicked(self) } func checkPicOne() { secondImage.bouncing() if firstImage.layer.borderWidth != 0 { firstImage.layer.borderWidth = 0 } //delegate call delegate.image2Clicked(self) } } 

在视图控制器符合它:

 class myViewController: UIViewController, TwoPicsTableViewCellDelegate{ //implement delegate methods func image1Clicked(cell:TwoPicsTableViewCell){ let indexPath = tableview.indexPathForCell(cell) print(indexPath) } func image2Clicked(cell:TwoPicsTableViewCell){ let indexPath = tableview.indexPathForCell(cell) print(indexPath) } func table cellForRowAt..........{ let cell = table.dequeCellAt.......... as? TwoPicsTableViewCell //Assign delegate cell.delegate = self ....... ....... return cell } }