我有一個協議內的函數,它將TableViewcell作爲參數。我怎樣才能阻止我的tableview單元格重新使用它裏面的按鈕?
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和實現委託和它的功能,這是挖掘何時改變按鈕的圖像。 「正在選擇」是綠色圖像,「正在選擇」是紅色圖像。
這一切都很好,當點擊一個單元格的按鈕從紅色到綠色,反之亦然。但是,當單元格被重用時,單元格的按鈕狀態會持續存在並被重用於進入視圖的新行。有什麼辦法可以阻止這種情況發生?
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)
}
}
}
的可能的複製[如何防止從的UITableView重用定製單元斯威夫特(https://stackoverflow.com/問題/ 37938809/how-to-prevent-uitableview-from-reuse-custom-cells-swift) – 2017-09-03 18:32:14
您不想避免重複使用單元格。這不是合適的解決方案。 – rmaddy