2017-06-02 6 views
0

Ich habe einen View-Controller mit einem Textfeld für die Namenseingabe. Ich möchte in der Lage sein, den name.text-Wert von meinem Hauptansicht-Controller zu ziehen, aber ich kämpfe mit dem Code.Daten können nicht zwischen View-Controllern gezogen werden: Swift 3

Sorry, ich weiß, gibt es ähnliche Fragen, ich habe Schwierigkeiten zu verstehen, wo ich aber werde falsch, hier ist mein Code:

func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    if segue.identifier == "statsegue" { 

     let statVC = segue.destination as! SecondViewController 

     NameLabelMain.text = statVC.NameDisplayStat.text 

     //or try that if above doesn't work: detailsVC.passedString = recipes[indexPath?row] 
    } 
} 

Dies auf meiner Haupt-Seite ist, zu versuchen, die Daten zu ziehen aus meine zweite Ansicht.

Alle Gedanken oder Vorschläge wären genial.

Danke

Antwort

0

Dies ist ein häufiges Timing-Problem.

In prepareForSegue ist die Ansicht des Zielansicht-Controllers noch nicht geladen, so dass alle IBOutlet s noch nicht verbunden sind (aka nicht verfügbar).

Sie können nur auf Daten zugreifen, die direkt nach der Initialisierung verfügbar sind.

Im Allgemeinen werden Daten vom Quellcode-Controller an den Ziel-Controller übergeben, nicht umgekehrt.

+0

Ah! Das erklärt viel, danke. Ich nehme an, Sie haben keinen Rat, wie Sie damit umgehen könnten. – Kayleigh

+0

Wenn Sie wirklich * Daten * ziehen möchten, können Sie eine Callback-Schließung verwenden, für * Push * Daten müssen Sie eine temporäre Variable deklarieren und das UI-Element des Ziel-Controllers in seiner 'viewDidLoad() 'Methode aktualisieren. – vadian

Verwandte Themen