我有这个带有两个复选框的应用程序,当我关闭时加载,当我打开时加载但是我无法理解它。请有人帮我编辑代码。我知道需要以某种方式保存在UserDefaults
,但我不知道如何编码。
class CheckBox: UIButton {
// Images
let checkedImage = UIImage(named: "checked")! as UIImage
let uncheckedImage = UIImage(named: "unchecked")! as UIImage
// Bool property
var isChecked: Bool = false {
didSet{
if isChecked == true {
self.setImage(checkedImage, for: UIControlState.normal)
} else {
self.setImage(uncheckedImage, for: UIControlState.normal)
}
}
}
override func awakeFromNib() {
self.addTarget(self, action:#selector(buttonClicked(sender:)), for: UIControlEvents.touchUpInside)
self.isChecked = false
}
@objc func buttonClicked(sender: UIButton) {
if sender == self {
isChecked = !isChecked
}
}
}
答案 0 :(得分:1)
使用以下命令将bool值保存到UserDefaults:
UserDefaults.standard.set(isChecked, forKey: "com.myCompany.checkboxState")
使用以下方式加载:
self.isChecked = UserDefaults.standard.bool(forKey: "com.myCompany.checkboxState")
在UserDefaults的文档中阅读更多内容。
请记住,如果您有多个复选框,则必须为每个复选框使用唯一键,例如使用UIButton
标记来区分它们:
class CheckBox: UIButton {
// Images
let checkedImage = UIImage(named: "checked")! as UIImage
let uncheckedImage = UIImage(named: "unchecked")! as UIImage
// Bool property
var isChecked: Bool = false {
didSet{
if isChecked == true {
self.setImage(checkedImage, for: UIControlState.normal)
} else {
self.setImage(uncheckedImage, for: UIControlState.normal)
}
// save it like this
UserDefaults.standard.set(isChecked, forKey: "com.myCompany.checkboxStateFor\(self.tag)")
}
}
override func awakeFromNib() {
self.addTarget(self, action:#selector(buttonClicked(sender:)), for: UIControlEvents.touchUpInside)
// load it like this
self.isChecked = UserDefaults.standard.bool(forKey: "com.myCompany.checkboxStateFor\(self.tag)")
}
@objc func buttonClicked(sender: UIButton) {
if sender == self {
isChecked = !isChecked
}
}
}
然后不要忘记为应用中的每个复选框设置不同的标记。
答案 1 :(得分:0)
While READER.EOF = False
Done(count) = myReader("Name").Value
count += 1
READER.MoveNext()
End While
答案 2 :(得分:0)
您可能正在寻找类似的东西吗?
extension UserDefaults{
func setChecked(value: Bool, forId id: String){
set(value, forKey: id)
}
func getChecked(forId id: String) -> Int{
return bool(forKey: id)
}
}
使用:
UserDefaults.standard.setChecked(true, "box1")
UserDefaults.standard.getChecked("box1")