在这段代码中,我有一个选中的状态和取消选择的按钮状态。按下按钮后,它会变为绿色,再次按下时,它会变为红色以表示取消选择的状态。
但是,所有这些都在DetailViewController中,当我从tableView中选择一个特定的行,然后单击按钮显示绿色并返回并尝试不同的行,该按钮在另一行显示绿色表示我'我按下了它(我没有)。我想知道是否有一种方法只显示我选择的行的详细信息绿色和其他的红色?
jetty.key
答案 0 :(得分:0)
此问题是因为按钮识别defaults
UserDefaults属性以设置自我显示的方式,当您第一次按下按钮defaults
设置为true时,以及当您返回按钮时仍然是绿色的(defaults
仍然是真的)
试试这个:
func viewWillAppear(_ animated: Bool) {
UserDefaults.standard.set(false, forKey: "going")
}
答案 1 :(得分:0)
如果您有静态行,则每行需要一个用户默认值来保留会话之间的按钮状态。如果您有很多行,那么在代码中使用Core Data会更容易和更清晰。
如果您的行是动态的,并且您只需要为单个应用会话保存按钮状态,请使用将行保存为键并将布尔值保存为值的字典。每次重新加载表时,都要从字典中获取每行的按钮状态。
var buttonStates: [Int:Bool]