我在我的tableView中定製了tableViewCells。他們有兩個或更多的ImageViews在單元格內,可以被觸摸然後他們會彈跳並被選中。但是由於單元格正在被重用,我怎麼知道在哪個行中選擇了哪個ImageView?我知道我可以得到indexPath.row,但我怎麼知道2或3個圖像中的哪一個觸發了函數給我indexPath?希望你們明白我的意思。這是我的自定義tableViewCell,tableView代碼只是標準。如何知道哪個圖片在哪個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
}
}
你已經對每個圖像視圖的輕敲姿勢,所以現在你知道哪個圖像被觸摸。問題是什麼? –
是true,但輕擊手勢位於tableViewCell類內部。那麼如何從那裏獲取indexPath呢?我只知道我可以從UITableView類中的UITableView獲取indexPath,但是我需要在圖像上放置另一個手勢識別器,這似乎是錯誤的! –
您需要委託在視圖控制器中觸發單元格被觸摸的事件。 ViewController引用了表視圖,並可以通過調用tableview.indexPathForCell函數給你indexPath –