Partager des données entre view

maitomaito Membre
mars 2015 modifié dans API UIKit #1

Bonjour, je me demandais comment partager des données à  traver des classes ? En fait je m'entraine en faisant une navigation contrôler où on se connecte a son compte (ou en créer un). Donc je veux partager les données de la view (ou on créer son compte) vers la view où on se connecte.


Merci!


Mots clés:

Réponses

  • LouLou Membre

    (*faisant ?)


     


    Généralement, on utilise le MVC, on sépare la view, du controller, du model. De cette façon, dans n'importe quel controller, tu peux aller chercher dans la classe qui te sert de model pour récupérer des données, ou les modifier. C'est une classe/un endroit qui centralise tes données. Si c'est juste pour un login/mot de passe, il y a d'autres solutions plus simples. Mais si c'est un compte avec 5 adresses, des messages etc. c'est mieux d'organiser ton code avec une classe qui te sert de Model.


     


    Entre deux vues simplement, tu peux mettre une variable dans le 2e controller, que tu remplis quand tu l'appelles dans le 1er controller, quand tu prepare le segue par exemple. Tu mets directement l'info "destinationController.maVariable = mesInfos". 


     


    Encore plus simple, tu peux mettre des données dans le NSUserDefaults, ce sont les préférences de ton appli, pour sécuriser le mot de passe, tu peux aller voir du côté de Keychain (il me semble qu'il faut toujours protéger ses données qui restent sur le mobile, même dans un iphone qui est bien sécurisé.)


  • maitomaito Membre

    Merci pour ta réponse,


    c'est à  dire que je peux accéder aux variables (données après avoir créer son compte) depuis ma classe qui contrôle ma view (pour se connecter) ? 


    Comment je suis sensé faire ?


  • Joanna CarterJoanna Carter Membre, Modérateur
    mars 2015 modifié #4
    Je te conseillerais à  regardez les vidéos de Stanford University CS193p afin que tu comprennes mieux comment organiser le MVC.

    https://itunes.apple.com/us/course/developing-ios-8-apps-swift/id961180099
  • LouLou Membre
    mars 2015 modifié #5

    Les cours de stanford sont très bons, c'est toujours intéressant de les regarder. Tu as aussi le site raywenderlich.com qui est excellent, il y a énormément de tutos.


     


    Pour ta question, pour faire le lien entre la vue et le controller il y a les IBOutlet et IBAction. Quand tu crées un projet "Single View Application" par exemple, la classe ViewController est associée par défaut au controller dans le storyboard (en cliquant sur l'icône d'un carré avec les lignes, tu le vois. Sinon, tu le mets toi-même, si tu rajoutes un nouveau viewController dans ton storyboard par exemple). Ca veut dire que ton storyboard est relié à  ta classe Viewcontroller et que tu peux relier des iboutlet/ibaction.


    Tu peux afficher l'Assistant Editor (cmd, alt, enter pour le raccourci) tu vas chercher ta classe ViewController (en haut, les 4 carrés pour afficher les classes "récentes") pour qu'elle s'affiche dans la fenêtre de droite, et tu "ctrl+clic" sur un élément de ton storyboard : quand tu glisses ensuite la souris, une flèche bleue apparaà®t, et tu relâches quand tu arrives dans la fenêtre de droite. Là  ils te demandent si tu veux que ce soit un IBOutlet (stocker la variable) ou un IBAction (qui va déclencher une action, une méthode).


     


    Tout ça, tu devrais l'apprendre avec des tutos pour être plus à  l'aise, sur raywenderlich tu trouveras ton bonheur.


  • HerveHerve Membre

    Pour ma part, j'utilise deux méthodes différentes. Chacune emploie comme dit plus haut une classe ne servant qu'à  conserver les valeurs pour toute l'application, et servant d'ailleurs à  l'archivage des données via le protocole NSCoding.


     


    La première consiste à  instancier dans chaque UIView une copie de la classe qui stocke les données. Tu importes cette classe dans le header, tu utilises @property et @synthesize et tu copies de classe en classe via les IBOutlet l'instance de ta classe de sauvegarde.


    La seconde consiste à  utiliser la méthode "sharedInstance" de (de mémoire) NSObject.

Connectez-vous ou Inscrivez-vous pour répondre.