如何获得每个选定的tableView行的UIButton状态不同?

如何获得每个选定的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) 

} 
} 
+0

的可能重复[我怎样才能得到UIButton的状态是每一个的tableView行不同?(https://*.com/questions/46012447/how-can-i-get-the-uibutton -state-待不同换每个-的tableview行) – dfd

这个问题是因为按钮识别defaults UserDefaults属性设置自我如何显示出来,当你按下按钮首次defaults设置为true,当你回去的按钮仍然是绿色(defaults仍然是真实的)

试试这个:

func viewWillAppear(_ animated: Bool) { 
    UserDefaults.standard.set(false, forKey: "going") 
} 

如果你有静态行,你需要一个用户的默认键为每一行保存会话之间的按钮状态。如果你有很多行,使用核心数据将会更容易,更清洁。

如果您的行是动态的,并且只需要为单个应用程序会话保存按钮状态,请使用将该行保存为键并将布尔值作为值的字典。每次重新载入表格时,都要从字典中获取每行按钮的状态。

var buttonStates: [Int:Bool]