首页 文章

委托用于控制单元格内的按钮不起作用

提问于
浏览
0

我有一个带有3个tableviews的自定义UIView,tableviews根据他们的内容自行调整大小,并且当他们为空时显示不同的笔尖而不是他们有内容时 . 所有这些都嵌入在滚动视图中并且它已经工作,我的视图滚动并且tableviews适当地显示内容并且它们正确地自动调整,滚动视图的大小也正在调整而没有问题 .

在tableviews具有项目的两个tableviews中,我想要访问单元格笔尖中的一些按钮以及在我已定义表视图的View控制器内单击的单元格的索引 .

enter image description here

在图片中我显示了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 回答

  • 1

    看起来你没有在 CarritoViewController 中设置委托 . 您需要确保在 func tableView(UITableView, cellForRowAt: IndexPath) 内设置 cell.delegate = self .

相关问题