x如何在应用程序退出时保存UISwitch状态(Swift)



我如何保存多个开关的状态,这样当应用程序退出并重新打开时,所有开关都不在我退出之前的状态。以下是我为快速作业管理器编写的非常简单的代码。

//
//  ViewController.swift
//  HomeworkManager
//
//  Created by Nate Parker on 9/2/14.
//  Copyright (c) 2014 Nathan Parker. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func resetClicked(sender: AnyObject) {
    spanish.setOn(false, animated: true);
    algebra.setOn(false, animated: true);
    amerCult.setOn(false, animated: true);
    bio.setOn(false, animated: true);
    col.setOn(false, animated: true);
}
@IBOutlet var spanish: UISwitch
@IBOutlet var algebra: UISwitch
@IBOutlet var amerCult: UISwitch
@IBOutlet var bio: UISwitch
@IBOutlet var col: UISwitch

}

AppDelegate类中,在applicationDidEnterBackground中发布通知,因此当应用程序进入后台时,您的视图控制器将能够得到通知:

func applicationDidEnterBackground(application: UIApplication!) {
    NSNotificationCenter.defaultCenter().postNotificationName("kSaveSwitchesStatesNotification", object: nil);   
}

在您的viewcontroller类中添加以下代码:

override func viewDidLoad() {
    super.viewDidLoad()
    self.restoreSwitchesStates();
    NSNotificationCenter.defaultCenter().addObserver(self, selector: "saveSwitchesStates", name: "kSaveSwitchesStatesNotification", object: nil);
}
override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
func saveSwitchesStates() {
    NSUserDefaults.standardUserDefaults().setBool(spanish!.on, forKey: "spanish");
    NSUserDefaults.standardUserDefaults().setBool(algebra!.on, forKey: "algebra");
    NSUserDefaults.standardUserDefaults().setBool(amerCult!.on, forKey: "amerCult");
    NSUserDefaults.standardUserDefaults().setBool(bio!.on, forKey: "bio");
    NSUserDefaults.standardUserDefaults().setBool(col!.on, forKey: "col");
    NSUserDefaults.standardUserDefaults().synchronize();
}
func restoreSwitchesStates() {
    spanish!.on = NSUserDefaults.standardUserDefaults().boolForKey("spanish");
    algebra!.on = NSUserDefaults.standardUserDefaults().boolForKey("algebra");
    amerCult!.on = NSUserDefaults.standardUserDefaults().boolForKey("amerCult");
    bio!.on = NSUserDefaults.standardUserDefaults().boolForKey("bio");
    col!.on = NSUserDefaults.standardUserDefaults().boolForKey("col");
}

首先,添加viewcontroller作为应用程序进入后台时发布的通知的观察者。当触发此通知时,它将调用saveSwitchesStates()方法,该方法将在NSUserDefaults中保存交换机状态。此外,在viewDidLoad()中调用restoreSwitchesStates(),它将从NSUserDefaults 中读取开关状态的存储布尔值

当应用程序要关闭时,使用NSUserDefaults保存状态,并在应用程序启动时将其加载回。说明如何使用NSUserDefaults 保存数据的教程

http://www.icodeblog.com/2008/10/03/iphone-programming-tutorial-savingretrieving-data-using-nsuserdefaults/

最新更新