我怎样才能得到不同的每个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)
}
}
感谢你好!这工作正常。如果我在DetailViewController上实现了按钮,并且我有一个tableView并选择了一行,那么我将如何停止每个单元格detailView中的所有按钮都将变为绿色? –
您可以在按钮上添加标签并检查cellForRow方法 –