2017-01-03 7 views
0

セグのデスティネーションビューコントローラにデータを渡すためにprepare(forSegue)メソッドを使用する場合、デスティネーションVCのすべてのメンバーはnilです。したがって、これらのメンバーにアクセスしようとすると、私のプログラムがクラッシュします。Swift 3:セグのデスティネーションビューコントローラでゼロ値のみ

ソース・ビュー・コントローラマイコード:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if segue.identifier == "Second2DetailEdit"{ 
     var detailVC = segue.destination as! DrinkDetailViewController 
     detailVC.headerLabel.text = "Edit Drink" 

    } 
    //... 
} 

VC自体がゼロではありません。 VCのすべてのメンバーのみ。私は何かを忘れましたか? これは私の新しいSwift 3プロジェクトでのみ発生します。私のSwift 2プロジェクトの同様のコードは問題ありません。 ありがとうございます。

答えて

1

宛先ビューコントローラのビューはまだ作成されていないため、すべてのIBOutletがnilになっています。文字列や目的地のViewDidLoadなどの通常のプロパティで必要な情報を送信して、ビューを更新してみてください。私は...アンラップあなたdetailVCではなく、力をアンラップ安全

if segue.identifier == "Second2DetailEdit" { 
    if let detailVC = segue.destination as? DrinkDetailViewController { 
     detailVC.headerLabel.text = "Edit Drink" 
    } 
} 

を示唆している

0

あなたはdestinationVCのプロパティを設定し、それらに情報を渡すのではなくUILabelを通してそれをやろうと簡単に時間を持っていますs ...

1

これを回避する最も良い方法は、2番目のビューコントローラで変数を作成し、その代わりにテキストを設定することです。

その後、vCが初期化されたら、headerLabel.textを新しい変数に設定することができますviewDidLoad

関連する問題