storyboard a l'autre une information

Bonjour a tous le monde,


 


Je ne sais pas si quelqu'un peux m'aider je désespère beaucoup avec cette application que je réalise.


je n'arrive pas a trouver de tuto, qui me permet de récupérer une information d'un storyboard a l'autre.


 


Je n'explique j'ai un storyboard avec des détailles d'un produit (photo, prix etc ...), puis je passe a un autre pour envoyé une information pour cela c'est OK, mais je voudrai récupérer IDProduit que j'avais dans le précédent storyboard, pour qu'a l'envoye j'ai cette information.


 


 


merci de votre aide,


Réponses

  • Il faut que tu passes par un "delegate". Fais des recherches sur le forum, il y a déjà  plein de choses à  ce sujet...
  • Joanna CarterJoanna Carter Membre, Modérateur
    janvier 2017 modifié #3

    C'est juste comme avec deux ViewControllers dans le même storyboard - dans la méthode prepare(for segue: UIStoryboardSegue, sender: Any?) du premier ViewController.


     


    Ceci dit, si tu crées un master/detail, de mon avis, il vaux mieux de mettre les deux ViewControllers dans le même storyboard.


  • Merci  de votre aide je n'y arrive pas  :'(   :'(

  • Pour passer des informations d'une vue à  une autre.. je fais comme ça :


     


    Dans le controller de ma vue 1 :



    var TabInfos : [String:String] = [:] // je crée un dictionnaire vide

    ..

    // Là  où ça m'arrange, je stock ce que je veux passer comme informations à  l'autre vue
    // Par exemple, lors d'un clic sur une cellule d'un tableView

    TabInfos = [
    "MonInfoN1" : "Info numéro 1",
    "MonInfoN2" : "Info numéro 2"
    ]

    // Puis je déclenche le "segue" via son identifiant
    performSegue(withIdentifier: "versMaProchainePage", sender: TabInfos) // déclenche le segue via son id (passe en parametre ce qu'on veut, là  un tableau de données)

    ..

    // Prépare les données à  envoyer à  une autre vue
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    //print(segue.identifier!)

    switch segue.identifier! {
    case "versMaProchainePage":
    // envoi les données vers l'autre vue
    let svc = segue.destination as! UINavigationController
    let addEventViewController = svc.topViewController as! LeNomDeMon2emeController // cette vue là 
    addEventViewController.TabInfos = TabInfos // la variable TabInfo est déclaré dans l'autre vue aussi

    default:
    print(segue.identifier!)
    break
    }
    }

    Dans ton storyboard, n'oublie pas de donner un identifiant à  ton "segue" (là  pour l'exemple c'est "versMaProchainePage")


     


    Dans mon deuxième controller (LeNomDeMon2emeController), il faut de quoi récupérer le TabInfos



    var TabInfos : [String:String]! // Pour recevoir le tableau de données de l'autre vue

    // Pour vérifier si t'as bien reçu les infos
    // dans viewDidLoad, tu récupère la variable remplie et tu l'affiche

    override func viewDidLoad() {
    super.viewDidLoad()
    print(TabInfos)
    }

    Normalement j'ai rien oublié ^^


  • Bon, je vais en faire hurler quelques-uns mais tu peux aussi utiliser des variables globales.




  • Bon, je vais en faire hurler quelques-uns mais tu peux aussi utiliser des variables globales.




    :o   :*   :*   :o  :/   :(  :s   :*   :o   :o

  • Merci a toi, j'ai utiliser ton code


     


    Cela me donne sur terminal 


     


     





    textfield0=1&textfield1=1&textfield2=1&textfield3=1&textfield4=1&nomLabel=toto&idproduit=Optional(["": "2332"])


    Je voudrais récupérer jute 2332.


     


    Merci


  • J'ai modifier cele est maintenant j'ai ça 


     




    =Optional(["6150"])


     


    Je voudrais retirer tous ce qui est en rouge


     


    Je vais y arrivé merci a vous, 


  • Comment tu créées cette variables ? Comment tu las récupères ?


    Outre le fait d'avoir un "=" étrange, c'est plus une question : "Comment ça se fait que parfois j'ai Optional(maValeur) plutôt que maValeur en Swift" (qui est un question qui a beaucoup de résultats sur ton Search Engine favori). Et qu'en réalité, il semble qu'à  la base ton objet était un array ?


  • C'est OK j'ai trouver.


     





    TabInfos = [ui_id.text!]
    let idLabel = TabInfos[0]

  • Joanna CarterJoanna Carter Membre, Modérateur
    Je crois que tu fais des bêtises dans ton code. Tu n'as ni répondu à  ta question initiale, ni nous montré ton code en contexte.


    Pour avoir les bonnes réponses, il faut mieux expliquer ton problème avec des morceaux de code.


  • Je crois que tu fais des bêtises dans ton code. Tu n'as ni répondu à  ta question initiale, ni nous montré ton code en contexte.


    Pour avoir les bonnes réponses, il faut mieux expliquer ton problème avec des morceaux de code.




     


     


    Joana à  raison. Et pourquoi tu parles de deux storyboards ? Quel est l'idée qui t'a amener à  avoir deux storyboards ? Quelqu'un dit souvent ici que quand il n'y a pas de solution c'est qu'il n'y a pas de problème. Il faudrait peut-être nous exposer ton problème pour que l'on puisse t'aider.

  • Le plus simple ne serait-il pas d'avoir une classe en mode "shared instance" qui stocke ce que tu veux faire passer d'une fenêtre à  l'autre, puisque celles-ci ne communiquerons pas directement? Cela marche toujours.


  • Joanna CarterJoanna Carter Membre, Modérateur

    Le plus simple ne serait-il pas d'avoir une classe en mode "shared instance" qui stocke ce que tu veux faire passer d'une fenêtre à  l'autre, puisque celles-ci ne communiquerons pas directement? Cela marche toujours.




    Ah, les globales déguisées ;)


  • Ah, les globales déguisées ;)




    Oui, les vraies globales, c'est mieux  B)



  • Oui, les vraies globales, c'est mieux  B)




    ???  B)   :( >:(   :*   B)   :o

  • Variables globales même pas déguisées je dirais...


     


    Cette "shared instance" instancie des objets d'une autre classe (contenant les images, les textes, tout ce qu'il faut) et les met dans un tableau, elle inclue au besoin NSCoding par exemple pour l'archive. 


     


    Bien évidemment, la classe graphique (chaque NSViewController par exemple) recopie ces données pour éviter les fuites de mémoire. 


     


    Non????   ???




  • Variables globales même pas déguisées je dirais...


     


    Cette "shared instance" instancie des objets d'une autre classe (contenant les images, les textes, tout ce qu'il faut) et les met dans un tableau, elle inclue au besoin NSCoding par exemple pour l'archive. 


     


    Bien évidemment, la classe graphique (chaque NSViewController par exemple) recopie ces données pour éviter les fuites de mémoire. 


     


    Non? ???   ???




    Attention à  la réponse du dragon cracheur de feu... Ca fait mal !

  • Le feu c'est dépassé, la glace c'est mieux ..



  • Le feu c'est dépassé, la glace c'est mieux ..




    Surtout à  la vanille  :D

  • DrakenDraken Membre
    janvier 2017 modifié #22

    nan .. à  la pistache !  <3 </p>

  • :D  


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