更改视图控制器时如何在swift中保存数据?

时间:2017-02-06 08:18:41

标签: ios swift xcode

所以我有我的主视图控制器,我有我的设置视图控制器。当我进入设置并翻转开关并返回主设备时,我的设置视图控制器将恢复其默认设置并与名称相同。如何在应用程序打开时保存数据,而不是恢复到默认值?

由于

3 个答案:

答案 0 :(得分:0)

您可以将您的按钮状态存储在userdefault

这是swift 3的例子:

你可以在actioin中获取按钮状态以获得valuechanged然后你可以将其存储在

 UserDefaults.standard.set(false, forKey: "buttonState")
    let buttonState = UserDefaults.standard.bool(forKey: "buttonState")

    if buttonState == true {

    }

  UserDefaults.standard.synchronize()

答案 1 :(得分:0)

1)当出现视图时,调用设置屏幕从NSUserDefaults获取数据,然后将数据填充到选项中。

2)当用户更改内容时,请更新UserDefaults并且不要忘记同步它。

答案 2 :(得分:0)

我更喜欢使用代理,而不是每次离开设置页面时都检查用户默认值。

protocol SettingsViewControllerDelegate: class {
    func settingsDidChange()
}
class SettingsViewController: UIViewController {
    weak var delegate: SettingsViewControllerDelegate?
    func someSettingChanged(){
        let defaults = UserDefaults.standard
        //... get the new settings
        defaults.set(newSettingsValue, forKey: "settingsKey")
        defaults.synchronize()
        delegate?.settingsDidChange()
    }

}
class MainViewController: UIViewController {
    func showSettingsVC(){
        let settingsViewController = //Initialization method
        settingsViewController.delegate = self
        self.show(settingsViewController, sender: self)
    }
}
extension MainViewController: SettingsViewControllerDelegate{
    func settingsDidChange() {
        let defaults = UserDefaults.standard
        if let settingsValue = defaults.value(forKey: "settingsKey"){
            //// do the appropriate changes
        }   
    }
}