2017-06-02 7 views
0

名前の入力テキストボックスを持つビューコントローラーがあります。メインビューコントローラからname.text値を取得できるようにしたいのですが、コードに苦労しています。ビューコントローラー間でデータをプルできません:Swift 3

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] 
    } 
} 

これはからデータを取得しようとしている、私のメインページにある:

申し訳ありませんが、私は私も間違っているつもりかを理解するのに苦労しています、同様の質問がある知っているが、ここに私のコードです私の第2の視点。

ご意見やご提案は素晴らしいと思います。

ありがとう

答えて

0

これは一般的なタイミングの問題です。

prepareForSegueでは、宛先ビューコントローラのビューがまだロードされていないため、すべてIBOutletはまだ接続されていません。

初期化直後に利用できるデータにのみアクセスできます。

しかし、一般に、ソースコントローラから宛先コントローラにデータを渡すのではなく、他の方法でデータを渡します。

+0

Ah!それは、多くの感謝を説明します。私はあなたがこれを扱う良い方法についてアドバイスを持っているとは思わない? – Kayleigh

+0

*データをプル*したい場合は、* push *データの場合、一時変数を宣言し、そのviewDidLoad()メソッドで宛先コントローラのUI要素を更新する必要がある場合にコールバッククロージャを使用できます。 – vadian

関連する問題