Aller au contenu


Photo

Passage de données entre ViewController (via le code)

passage données viewController code

  • Please log in to reply
4 réponses à ce sujet

#1 Alesck

Alesck

    Planteur de pousses

  • Membre
  • Pip
  • 6 messages

Posté 21 août 2017 - 17:05

Bonjour tout le monde,

 

J'essaye de passer d'une vue à l'autre via le code, et non via le storyboard, et de pouvoir passer des données entre ces deux vues.


Pour passer de l'une à l'autre, cela fonctionne, mais je n'arrive pas à récupérer les données que j'essaye de passer entre les deux vues...

 

Dans mon premier controller:

if let storyboard = self.storyboard {
    let destinationviewController:RunViewController = storyboard.instantiateViewController(withIdentifier :"RunViewController") as! RunViewController

    destinationviewController._title = "Mon titre!"
    self.present(destinationviewController, animated: false, completion: nil)
}

et dans mon controller de destination (RunViewController):

var _title:String?

override func viewDidLoad() {
    super.viewDidLoad()
    print("Titre reçu: \(_title)") // Me retourne nil
}

Si vous pouviez m'expliquer pourquoi cela ne fonctionne pas, ce serait super!  :) 

 

Merci,

 

 

Alexandre.



#2 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 996 messages
  • LocationPlestin-les-Grèves (22)

Posté 21 août 2017 - 18:42

C'est parce que viewDidLoad est appelé pendant le instantiateViewController ; du coup, _title ne contient que nil.

 

Le mieux c'est de faire qqch dans RunViewController comme :

{
  var title: String?
  {
    didSet
    {
      print("Titre reçu: \(title)")
    }
  }
  
  …
}


#3 Alesck

Alesck

    Planteur de pousses

  • Membre
  • Pip
  • 6 messages

Posté 21 août 2017 - 19:26

Bonsoir,

 

Très juste... :o

En fait, simplement en regardant dans le viewWillAppear plutôt que le viewDidLoad, ça fonctionne...

 

Désolé du dérangement, et merci pour votre réponse,

 

Alexandre.



#4 Joanna Carter

Joanna Carter

    Broyeur de fèves

  • Contrôleur d'arômes
  • 1 996 messages
  • LocationPlestin-les-Grèves (22)

Posté 21 août 2017 - 19:52

Petit problème avec viewWillAppear, c'est qu'elle pourrait être appelé plusieurs fois ; e.g. si l'utilisateur mettait ton appli en arrière-plan et puis la reprenait.

Utilisant le didSet est vraiment le meilleur place

#5 Alesck

Alesck

    Planteur de pousses

  • Membre
  • Pip
  • 6 messages

Posté 21 août 2017 - 20:07

Mmh, très vrai!

Je ne connaissais pas le didSet, merci







Also tagged with one or more of these keywords: passage, données, viewController, code

0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)