代表用于控制单元格内的按钮不起作用
Delegate used to control a button inside a cell not working
我有一个带有 3 个表格视图的自定义 UIView,这些表格视图根据它们所包含的内容自动调整大小,并且当它们为空时与它们有内容时显示不同的笔尖。所有这些都嵌入在滚动视图中并且它已经在工作,我的视图滚动并且表格视图适当地显示内容并且它们适当地自动调整大小,滚动视图的大小调整也没有问题。
在两个表视图中,当表视图有项目时,单元格笔尖中有一些我想访问的按钮以及在我定义了 Table 的视图控制器内单击的单元格索引查看。
在图片中,我显示了每个 tableView 都有一个项目,Canastas tableView 只有一个删除项目按钮,而 Productos tableView 有一个删除项目按钮和一个步进器来增加或减少数量。
我在 Whosebug 中找到了涉及委托的解决方案
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)")
}
您似乎没有在 CarritoViewController
中设置委托。您需要确保在 func tableView(UITableView, cellForRowAt: IndexPath)
.
中设置 cell.delegate = self
我有一个带有 3 个表格视图的自定义 UIView,这些表格视图根据它们所包含的内容自动调整大小,并且当它们为空时与它们有内容时显示不同的笔尖。所有这些都嵌入在滚动视图中并且它已经在工作,我的视图滚动并且表格视图适当地显示内容并且它们适当地自动调整大小,滚动视图的大小调整也没有问题。
在两个表视图中,当表视图有项目时,单元格笔尖中有一些我想访问的按钮以及在我定义了 Table 的视图控制器内单击的单元格索引查看。
在图片中,我显示了每个 tableView 都有一个项目,Canastas tableView 只有一个删除项目按钮,而 Productos tableView 有一个删除项目按钮和一个步进器来增加或减少数量。
我在 Whosebug 中找到了涉及委托的解决方案 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)")
}
您似乎没有在 CarritoViewController
中设置委托。您需要确保在 func tableView(UITableView, cellForRowAt: IndexPath)
.
cell.delegate = self