【发布时间】:2017-09-03 18:22:35
【问题描述】:
我在协议中有一个函数,它以 TableViewcell 作为参数。
protocol GoingButtonDelegate {
func goingButtonPressed(cell: TableViewCell)
}
class TableViewCell: UITableViewCell {
// Outlets
@IBOutlet weak var goingButton: UIButton!
var delegate: GoingButtonDelegate?
@IBAction func goingButtonTapped(_ sender: Any) {
delegate?.goingButtonPressed(cell: self)
}
然后我转到我的 ViewController 并实现委托及其功能,即在点击时更改按钮的图像。 “goingSelected”是绿色图像,“goingDeselected”是红色图像。
这一切都很好,当点击一个单元格的按钮时,它会从红色变为绿色,反之亦然。但是,当单元格被重用时,单元格的按钮状态会持续存在并被重用于进入视图的新行。有没有办法阻止这种情况发生?
extension ViewController: GoingButtonDelegate {
func goingButtonPressed(cell: TableViewCell) {
cell.goingButton.isSelected = !cell.goingButton.isSelected
if cell.goingButton.isSelected == true {
cell.goingButton.setImage(UIImage(named: "goingSelected"), for: UIControlState.selected)
} else if cell.goingButton.isSelected == false {
cell.goingButton.setImage(UIImage(named: "goingDeselected"), for: UIControlState.normal)
}
}
}
【问题讨论】:
-
您不想避免重复使用单元格。这不是正确的解决方案。
标签: ios swift uitableview tableview swift-protocols