Passage de données entre ViewController (via le code)
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.
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
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 :
Bonsoir,
Très juste...
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.
Utilisant le didSet est vraiment le meilleur place
Mmh, très vrai!
Je ne connaissais pas le didSet, merci