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

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’aider et m’expliquer pourquoi cela ne fonctionne pas, ce serait super! :slight_smile:
(Il y a un autre topic qui en parle déjà, j’ai essayé ce qui a été dis, mais sans succès :frowning:)

Merci,

Alexandre.

Pour ceux qui auront le même problème, j’ai trouvé la solution :slight_smile:
Le code fonctionne, il y a juste une chose à changer dans le controller de destination: ne pas récupérer le titre dans le viewDidLoad(), mais plutôt dans le viewWillAppear()!

Bonne soirée à tout le monde,

Alexandre.

Moi je dirais d’utiliser plutôt un didSet. (oui, je triche. J’ai vu ton post sur Cocoacafe.fr et la réponse de Joanna, une anglaise développant sur Mac depuis 25 ans, qui aime beaucoup aider les débutants. Ses conseils m’ont souvent été trés utiles).

http://forum.cocoacafe.fr/topic/15352-passage-de-données-entre-viewcontroller-via-le-code/

1 « J'aime »

Quels seraient les différences entre didSet et viewWillAppear() ? :slight_smile:

EDIT: Ah, j’ai vu sa réponse, je vais regarder à ça, merci :smiley: