我有一个自定义的UIView,它有3个tableview,tableview是根据它们所拥有的内容自动调整大小的,当它们为空时,显示的nib与有内容时不同。所有这些都嵌入到一个滚动视图中,它已经开始工作了,“我的视图”滚动和“表格视图”适当地显示内容并自动正确地调整大小,滚动视图的大小也在无问题地调整。
在两个tableviews中,当tableviews具有项时,我希望访问单元格nib中的一些按钮,以及在定义表视图的视图控制器中单击的单元格的索引。
swift - 用于控制单元内部按钮的代表无法正常工作-LMLPHP
在这张图片中,我展示了每个带有一个项目的表格视图,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/

10-12 00:18
查看更多