我在自定義TableViewCell的UIImageView上添加了一個TapGestureRecognizer,但是它沒有呼叫它的動作。當我點擊圖片時,它觸發了tableview的didSelectRowAt委托方法。我沒有使用任何故事板或.xib。我在通過.xib創建的用戶界面上做了無數次,沒有任何問題,但我不明白為什么在程式上這是不可行的。有什么想法嗎?
在我的自定義TableViewCell中:
var favButton = UIImageView()
override init(style: UITableViewCell.CellStyle, reuseIdentifier。String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
addSubview(favButton)
configureFavButton()
}
func set(stock: Stock) {
self.stock = stock
favButton.image = UIImage(systemName: "heart.fill")? /span>.withTintColor(.black, renderingMode: .alwaysOriginal)
}
func configureFavButton() {
//使用SnapKit創建約束。
favButton.snp.makeConstraints { make in
make.trailing.equalToSuperview().inset(10)
make.centerY.equalToSuperview()
make.height.width.equalTo(30)
}
favButton.isUserInteractionEnabled = true
favButton.addGestureRecognizer(UITapGestureRecognizer(目標: self, action: #selector(removeFromFavorites)))
}
@objc func removeFromFavorites() {
guard let stock = stock else { return }
delegate?.removeFromFavorites(stock)
}
在我的ViewController,當在cellForRowAt定義我的單元格時:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "FavoriteCell") as!
cell.delegate =self
cell.set(stock: model.favorites[indexPath.row])
return cell.
}
uj5u.com熱心網友回復:
你需要將子視圖(favButton)添加到單元格的contentView中,而不是視圖本身
。contentView.addSubview(favButton)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/311743.html
標籤:
上一篇:表視圖單元格類的視圖顯示為nil
