我有一个带有3个tableviews的自定义UIView,tableviews根据他们的内容自行调整大小,并且当他们为空时显示不同的笔尖而不是他们有内容时 . 所有这些都嵌入在滚动视图中并且它已经工作,我的视图滚动并且tableviews适当地显示内容并且它们正确地自动调整,滚动视图的大小也正在调整而没有问题 .
在tableviews具有项目的两个tableviews中,我想要访问单元格笔尖中的一些按钮以及在我已定义表视图的View控制器内单击的单元格的索引 .
在图片中我显示了tableViews,每个都有一个项目,Canastas tableView只有一个删除项目按钮,Productos tableView有一个删除项目按钮和一个步进器来增加或减少金额 .
我在StackOverflow Get button click inside UI table view cell中找到了一个涉及委托的解决方案,我实现了它 . 但出于某种原因,它还没有被执行 .
这是我的代码:
CanastasViewCell
import UIKit
protocol CanastasViewCellDelegate: class {
func closeButtonTapped(at index: IndexPath)
}
class CanastasViewCell: UITableViewCell {
@IBOutlet weak var imagenProducto: UIImageView!
@IBOutlet weak var nombreProducto: UILabel!
@IBOutlet weak var descProducto: UILabel!
@IBOutlet weak var precioProducto: UILabel!
@IBOutlet weak var closeButton: UIButton!
weak var delegate: CanastasViewCellDelegate?
var indexPath: IndexPath!
override func awakeFromNib() {
super.awakeFromNib()
}
@IBAction func eliminarProducto(_ sender: AnyObject) {
self.delegate?.closeButtonTapped(at: indexPath)
}
}
CarritoViewController
import UIKit
class CarritoViewController: UIViewController, UITableViewDelegate,
UITableViewDataSource, CanastasViewCellDelegate {
func closeButtonTapped(at index: IndexPath) {
print("Button tapped at index:\(index)")
}
1 回答
看起来你没有在
CarritoViewController
中设置委托 . 您需要确保在func tableView(UITableView, cellForRowAt: IndexPath)
内设置cell.delegate = self
.