我怎样才能得到不同的每个tableView行的UIButton状态?

在这个代码中,我有一个选定的状态和取消select状态为我的button。 当button被按下时,它变成绿色,再次按下它变成红色以表示取消select的状态。

然而,所有这一切都在一个DetailViewController,当我从我的tableView中select一个特定的行,然后单击button显示绿色,并返回并尝试不同的行,button显示绿色的另一行,这表示我已经按下它(我没有)。 我想知道是否有一种方法只显示绿色detailView我所select的行和红色的其他人?

let defaults = UserDefaults.standard // Outlets @IBOutlet weak var goingButton: UIButton! // Actions @IBAction func goingButtonTapped(_ sender: UIButton) { goingButton.isSelected = !goingButton.isSelected if goingButton.isSelected == true { goingButton.setImage(UIImage(named: "goingSelected"), for: UIControlState.selected) defaults.set(true, forKey: "going") defaults.synchronize() defaults.bool(forKey: "going") print("defaults: \(defaults)") } else if goingButton.isSelected == false { goingButton.setImage(UIImage(named: "goingDeselected"), for: UIControlState.normal) defaults.set(false, forKey: "going") defaults.synchronize() defaults.bool(forKey: "going") } } override func viewDidLoad() { super.viewDidLoad() goingButton.setImage(UIImage(named: "goingDeselected"), for: UIControlState.normal) if defaults.bool(forKey: "going") { goingButton.isSelected = true goingButton.setImage(UIImage(named: "goingSelected"), for: UIControlState.selected) } } 

尝试这个 –

 override func viewDidLoad() { super.viewDidLoad() goingButton.setImage(UIImage(named: "goingDeselected"), for: UIControlState.normal) if defaults.bool(forKey: "going") { goingButton.isSelected = true goingButton.setImage(UIImage(named: "goingSelected"), for: UIControlState.selected) } }