2017-03-12 4 views
0

J'essaie d'enregistrer une valeur de clic de bouton comme vrai ou faux dans la persistance. Si c'est le cas, un bouton d'image de case cochée est affiché. Si elle est fausse, un bouton d'image non cochée est affiché. Initialement, une image de boîte non cochée est affichée. Je suis en mesure de faire fonctionner cette fonctionnalité, mais j'ai de la difficulté à comprendre comment la faire persister lorsque je passe à un autre onglet, ou fermer et ouvrir l'application.Bouton Enregistrer cliquer sur une valeur booléenne persistante

import UIKit 

class CurrentGoalViewController: UIViewController { 

    var uncheckedBox = UIImage(named: "checkbox") 
    var checkedBox = UIImage(named: "checkedbox") 
    var isboxclicked: Bool! 

Ceci est la fonction de case à cocher qui se produit lorsque vous cliquez dessus. J'ai mis le bouton de la boîte pour être faux lors du chargement, de sorte que le bouton de la boîte est décochée en voyant cet écran.

override func viewDidLoad() { 
    super.viewDidLoad() 

    isboxclicked = false 
} 

Vous obtenez à cet écran en cochant la case d'un autre écran qui est un tableview dynamique, où chaque mot segues à son propre écran avec sa propre case à cocher (c'est un objectif application de maintien). Fondamentalement, je lis beaucoup sur la persistance et je suis confus sur la façon d'enregistrer l'état du bouton de sorte que lorsque vous vous éloignez de l'écran ou redémarrez l'application, il est toujours là. Toute aide serait appréciée Merci.

solution

Dans la fonction d'action de clic

let defaults = UserDefaults.standard 
defaults.set(isboxclicked, forKey:"checkboxstatus") 

Dans viewWillAppear

isboxclicked = defaults.bool(forKey: "checkboxstatus") 
if isboxclicked == true { 
uncheckBox.setImage(checkedBox, for: .normal) 
} 
+0

Copie possible de [Comment stocker les données persistantes sur mon application iOS à l'aide de Swift?] (Http://stackoverflow.com/questions/35762561/how-do-i-store-persistent-data-on-my- ios-app-using-swift) – shallowThought

Répondre

0

Enregistrer l'état lorsque le bouton est cliqué:

let defaults = UserDefaults.standard 
defaults.set(true, forKey: "CheckBoxChecked") 

Charger l'état viewDidLoad:

let defaults = UserDefaults.standard 
let state = defaults.bool(forKey: "CheckBoxChecked") 

La dernière fonction retourne false quand aucune valeur n'a été enregistrée encore.

+0

Merci! Cela a beaucoup aidé, a finalement fonctionné – moesyzlack23

0

Vous ne pouvez pas définir de propriété ou de variable pour enregistrer l'état de la case à cocher car elle n'est disponible que lorsque viewcontroller est en mémoire.

Je voudrais vous proposer une solution qui persistera jusqu'à ce que l'utilisateur réinstalle l'application. Utilisez UserDefaults valeurs pour enregistrer l'état et vous pouvez axhive cette fonctionnalité sans aucun souci.

De même, si vous souhaitez l'enregistrer pour un nombre limité d'instances UIViewController, vous pouvez utiliser le concept de variables externes. En rapide par défaut, tous les vaiables seront vaiables externes

espoir que cela vous aide,

0

NSUserDefault serait ma suggestion. C'est celui utilisé par les applications qui contiennent généralement des données persistantes comme des clés API. Donc, je pense que cela va résoudre vos besoins aussi.