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() метод saveSwitchesStates() который сохранит состояния переключателей в NSUserDefaults . Также в viewDidLoad() вызывает restoreSwitchesStates() который будет читать сохраненные bools для состояний переключателей из NSUserDefaults

Вы можете использовать UserDefaults для сохранения состояния UISwitch следующим образом:

 let userDefaults = NSUserDefaults() userDefaults.setObject(NSNumber(bool: spanish.on), forKey: "spanish") userDefaults.setObject(NSNumber(bool: algebra.on), forKey: "algebra") userDefaults.setObject(NSNumber(bool: amerCult.on), forKey: "amerCult") userDefaults.setObject(NSNumber(bool: bio.on), forKey: "bio") userDefaults.setObject(NSNumber(bool: bio.on), forKey: "col") 

и когда вы загружаете их снова, вы можете установить состояние UISwitch следующим образом:

 let isSpanish = userDefaults.objectForKey("spanish") as NSNumber let isAlgebra = userDefaults.objectForKey("algebra") as NSNumber let isAmerCult = userDefaults.objectForKey("amerCult") as NSNumber let isBio = userDefaults.objectForKey("bio") as NSNumber let isCol = userDefaults.objectForKey("col") as NSNumber spanish.setOn(isSpanish.boolValue, animated: false) algebra.setOn(isAlgebra.boolValue, animated: false) amerCult.setOn(isAmerCult.boolValue, animated: false) bio.setOn(isBio.boolValue, animated: false) col.setOn(isCol.boolValue, animated: false) 

Используйте NSUserDefaults для сохранения там состояния, когда приложение закрывается и загружает их при запуске приложения. Учебное пособие, объясняющее, как сохранять данные с помощью NSUserDefaults

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

  • Установка начального состояния UISwitch
  • Как повернуть UISwitch в Xcode?
  • Странная проблема с отображением UISwitch в UITableView
  • Обновить представление после возобновления работы приложения из многозадачности
  • UISwitch в пользовательском аксессуаре
  • iOS - изменение размера UISwitch в UINavigationBar
  • Хранить переключатель ON / OFF в NSUserDefaults?
  • Обновить состояние UISwitch при нажатии в TableView
  • UISwitch работает только в одном направлении
  • Позиционирование UISwitch в UITableViewCell вправо
  • UISwitch в UITableViewCell с использованием Swift
  • Давайте будем гением компьютера.