我用UILabel和Button创建自定义单元格。在我的控制器中连接UIButton作为操作后。如果触摸按钮它会改变图像的用途,但我想要的是,触摸后也可以改变UILabel的背景颜色。如何引用我的自定义单元格。
@IBAction func selectCell(_ sender: UIButton) {
if sender.imageView?.image == UIImage(named: "do") {
sender.setImage(UIImage(named: "done"), for: .normal)
} else {
sender.setImage(UIImage(named: "do"), for: .normal)
}
}
答案 0 :(得分:1)
为什么不使用委托系统?这样您就可以轻松获得对细胞的引用。
在你的cell.swift
中@objc protocol CellDelegate: class {
func buttonPressed(forCell cell: Cell)
}
然后在你的单元类中:你需要有一个委托属性,你的IBAction方法,以及一种设置你的委托的方法:
class Cell {
fileprivate weak var delegate: CellDelegate? = nil
func setup(withDelegate delegate: CellDelegate) {
self.delegate = delegate
}
@IBAction func deleteButtonPressed(_ sender: Any) {
if sender.imageView?.image == UIImage(named: "do") {
sender.setImage(UIImage(named: "done"), for: .normal)
} else {
sender.setImage(UIImage(named: "do"), for: .normal)
}
delegate?.buttonPressed(forCell: self)
}
}
最后在TableViewController中:您需要在配置单元格期间将委托设置为self,并实现委托方法:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = viewModel.cellIdentifier(for: indexPath)
let cell = tableView.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! Cell
cell.setup(withDelegate: self)
return cell
}
extension: TableViewController: CellDelegate {
func buttonPressed(forCell cell: Cell) {
//Do what you want
}
}
这就是我如何为细胞设定行动