如何让每个 tableView 行的 UIButton 状态不同?
How can I get the UIButton state to be different for each tableView row?
在这段代码中,我的按钮有 selected 状态和 deselected 状态。当按钮被按下时,它变为绿色,再次按下时它变为红色以表示 deselected 状态。
但是,所有这些都在 DetailViewController 中,当我 select 我的 tableView 中的特定行然后单击按钮显示绿色并返回并尝试不同的行时,按钮在另一行上显示绿色表示我已经按下它的行(我没有)。我想知道是否有一种方法可以只为我 select 编辑的行的 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)
}
}
在这段代码中,我的按钮有 selected 状态和 deselected 状态。当按钮被按下时,它变为绿色,再次按下时它变为红色以表示 deselected 状态。
但是,所有这些都在 DetailViewController 中,当我 select 我的 tableView 中的特定行然后单击按钮显示绿色并返回并尝试不同的行时,按钮在另一行上显示绿色表示我已经按下它的行(我没有)。我想知道是否有一种方法可以只为我 select 编辑的行的 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)
}
}