我有一个自定义的UIView,它有3个tableview,tableview是根据它们所拥有的内容自动调整大小的,当它们为空时,显示的nib与有内容时不同。所有这些都嵌入到一个滚动视图中,它已经开始工作了,“我的视图”滚动和“表格视图”适当地显示内容并自动正确地调整大小,滚动视图的大小也在无问题地调整。
在两个tableviews中,当tableviews具有项时,我希望访问单元格nib中的一些按钮,以及在定义表视图的视图控制器中单击的单元格的索引。
在这张图片中,我展示了每个带有一个项目的表格视图,Canastas表格视图只有一个delete item按钮,Productos表格视图有一个delete item按钮和一个步进器来增加或减少数量。
我在StackOverflow中找到了一个涉及委托的解决方案
Get button click inside UI table view cell,我实现了。但由于某些原因,它无法工作,委托方法中的代码也无法执行。
这是我的代码:
加拿大
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)
}
}
CarritoView控制器
import UIKit
class CarritoViewController: UIViewController, UITableViewDelegate,
UITableViewDataSource, CanastasViewCellDelegate {
func closeButtonTapped(at index: IndexPath) {
print("Button tapped at index:\(index)")
}
最佳答案
看起来您没有在CarritoViewController
内设置代理。您需要确保在cell.delegate = self
内设置func tableView(UITableView, cellForRowAt: IndexPath)
。
关于swift - 用于控制单元内部按钮的代表无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42101869/