我创建了一个自定义表格视图单元格。在我的应用程序中,有两个文件。我有一个单独的自定义表视图单元格的文件。然后我有一个tableviewcontroller文件作为一个整体。
在我的自定义表格视图单元格中,有一个UISwitch。此UISwitch的初始值已关闭。在自定义表视图单元的文件中,我为交换机创建了一个函数。我还为开关创建了一个插座。
@IBOutlet var theSwitch: UISwitch!
@IBAction func mySwitch(_ sender: AnyObject) {
}
在我的表视图控制器中,我已经创建了视图确实出现的功能。我假设我需要做的是保存开关的值
@IBAction func mySwitch(_ sender: AnyObject) {
}
然后在表视图控制器中,以某种方式调用它在这个视图中确实出现了函数。
override func viewDidAppear(_ animated: Bool) {
}
我遇到的问题是如果更改了开关的值,则保存它。例如,如果用户打开应用程序并打开开关,我希望应用程序保存它,以便在重新打开应用程序时,交换机的值仍然打开。希望这可以通过使用用户默认值来完成。如果有人可以告诉我这样做的代码,那就太好了。
答案 0 :(得分:5)
在IBAction
方法中,您可以像这样保存值
@IBAction func mySwitch(_ sender: UISwitch) {
UserDefaults.standard.set(sender.isOn, forKey: "Switch")
}
在您的表视图中,委托方法以这种方式编写,以从用户默认值中获取值,并根据您之前的值设置切换状态
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let yourCell = tableView.dequeueReusableCellWithIdentifier("ProfileCell", forIndexPath: indexPath) as! MenuProfileTableViewCell
yourCell.yourSwitch.setOn(UserDefaults.standard.bool(forKey: "Switch"), animated: true)
}
答案 1 :(得分:4)
你可以在swift 3中使用setBoolForkey,就像这样
UserDefaults.standard.set(true, forKey: "onoroff")
你要保存的地方,你可以检查viewdidload()中的值,根据“onoroff”的值改变开关的状态
theSwitch.setOn(UserDefaults.standard.bool(forKey: "onoroff"), animated: false)
答案 2 :(得分:2)
您可以像这样查看价值:
Swift 2
let userDefaults = NSUserDefaults.standardUserDefaults()
if userDefaults.valueForKey("SwitchValue") != nil{
let object = userDefaults.valueForKey("SwitchValue") as? NSNumber
yourSwitch.on = (object?.boolValue)!
}
并将值保存到userDefaults:
userDefault.setValue(NSNumber(bool: yourSwitch.value), forKey:"SwitchValue")
Swift 3
let uDefault = UserDefaults.standard
if uDefault.value(forKey: "SwitchValue") != nil{
let object = uDefault .value(forKey: "SwitchValue") as? NSNumber
yourSwitch.isOn = (object?.boolValue)!
}
并设定值
uDefault.set(NSNumber(bool: yourSwitch.value), forKey: "SwitchValue")
希望这会有所帮助
答案 3 :(得分:2)
正如PiyushRathi所说,你可以用NSNumber来做,但你可以通过设置Bool来做到这一点:
Swift 2.3
// saving switch value
NSUserDefaults.standardUserDefaults().setBool(theSwitch.on, forKey: "SwitchValue")
// getting back the value
theSwitch.setOn(NSUserDefaults.standardUserDefaults().boolForKey("SwitchValue"), animated: true)
对于Swift 3(正如EmilioPelaez建议的那样):
// saving switch value
UserDefaults.standard.set(theSwitch.isOn, forKey: "SwitchValue")
// getting back the value
theSwitch.setOn(UserDefaults.standard.bool(forKey: "SwitchValue"), animated: true)
此外,如果您有许多UI组件要保存而不是切换,您还应该查看this UIViewController"状态保留指南"。