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

问题描述:

在这段代码中,我有一个选定的状态和取消选择状态,用于我的按钮。当按钮被按下时,它变成绿色,当再次按下时,它变成红色以表示取消选择的状态。我怎样才能得到不同的每个tableView行的UIButton状态?

然而,这一切是在DetailViewController,当我从我的tableView选择特定的行,然后点击按钮显示绿色,回去尝试不同的行,该按钮为绿色,说明在这个其他行这表示我已经按下了(我没有)。我想知道是否有一种方法只显示为我选择的行的detailView和其他人的红色显示为绿色的方式?

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) 

    } 
} 
+0

感谢你好!这工作正常。如果我在DetailViewController上实现了按钮,并且我有一个tableView并选择了一行,那么我将如何停止每个单元格detailView中的所有按钮都将变为绿色? –

+0

您可以在按钮上添加标签并检查cellForRow方法 –