swift - CustomCell 标签值更改时如何更新 UITableView?
问题描述
我有一个自定义单元格类,其中有两个按钮和一个在其自己的类中定义的标签。按下按钮时,我正在使用协议委托来更新标签的值。但我无法弄清楚如何更新 UITableView。
protocol customCellDelegate: class {
func didTapDecrementBtn(_ sender: AllCountersTableViewCell)
func didTapIncrementBtn(_ sender: AllCountersTableViewCell)
func updateTableViewCell(_ sender: AllCountersTableViewCell)
}
class AllCountersTableViewCell: UITableViewCell {
@IBOutlet weak var counterValueLbl: UILabel!
@IBOutlet weak var counterNameLbl: UILabel!
@IBOutlet weak var counterResetDateLbl: UILabel!
@IBOutlet weak var counterDecrementBtn: UIButton!
@IBOutlet weak var counterIncrementBtn: UIButton!
weak var delegate: customCellDelegate?
@IBAction func decrementBtnPressed(_ sender: UIButton) {
delegate?.didTapDecrementBtn(self)
delegate?.updateTableViewCell(self)
}
@IBAction func incrementBtnPressed(_ sender: UIButton) {
delegate?.didTapIncrementBtn(self)
delegate?.updateTableViewCell(self)
}
在我的 ViewController 中,我提供了委托。但是 reloadData() 不起作用,所以虽然sender.counterLbl.value
改变它并没有反映在视图上。
extension AllCountersVC: customCellDelegate {
func didTapIncrementBtn(_ sender: AllCountersTableViewCell) {
guard let tappedCellIndexPath = tableView.indexPath(for: sender) else {return}
let rowNoOfCustomCell = tappedCellIndexPath[1]
let newValue = String(allCounter[rowNoOfCustomCell].incrementCounterValue(by: allCounter[rowNoOfCustomCell].counterIncrementValue))
sender.counterValueLbl.text = newValue
}
func updateTableViewCell(_ sender: AllCountersTableViewCell) {
allCountersTableView.reloadData()
}
解决方案
cellForRow
您必须设置cell.delegate = self
此逻辑才能开始工作。仅仅让您的控制器符合您的自定义单元委托协议是不够的。从您的帖子中,我假设delegate
始终nil
在单元格中,这就是它不起作用的原因。
推荐阅读
- c++ - 对于 AIFF 格式的数据块中的字节,二进制补码如何工作?
- java - 从 Json 文件调用单个对象
- python - 在启动时,我出现黑屏,并带有文本“Ubuntu 18.04.2 LTS localhost tty1”
- c# - 在单个 foreach 循环(或其他解决方案)中打印 2 个值
- java - jOOQ:获取别名字段的最佳方法(来自#as(alias,aliasFunction))
- linux - “Magento\Framework\DB\Adapter\Pdo\MysqlFactory”生成的源类“\Magento\Framework\DB\Adapter\Pdo\Mysql”不存在
- python - 在python广播中除以0?
- docker - 是否可以从主机引用 Docker 容器中的 SDK(或任何文件夹)?
- conda - conda 4.6到4.5降级后提示“系统找不到指定的路径”
- maven - 如何将目标与Maven中的特定阶段相关联