2017-02-19 6 views
-2

私の問題は、私が一般的なコードにはとても新しく、なぜ私の変数の値が遅すぎてリフレッシュされるのかわかりません。prepare(for segue:sender :)は、ibactionボタンよりも速いです。

Appでは、ビューがSecondViewControllerに変更され、コンソールがテーブル内で選択した行を出力します。しかし、SegueVarには、私がテーブル内のセルに置いたボタンをクリックすると、私に彼が関数を与えたかったという値は含まれていません。あなたのコードから

var uebergabe = String() 

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

    if segue.identifier == "vonSchuljahrzuFach" { 

     let nextVC: SecondViewController = segue.destination as! SecondViewController 

     nextVC.SegueVar.append(uebergabe) // Übergabe des ausgewählten Schuljahres ergänzen 

    } 
} 

@IBAction func testButton(_ sender: UIButton) { 

    self.uebergabe = self.meineSchuljahre[sender.tag] 
    self.meineSchuljahre[0] = self.uebergabe 
    print(self.meineSchuljahre[0], "buttonfunktion") 

} 
+2

ソースまたはデスティネーションビューコントローラで「テストボタン」はありますか?「SegueVar "配列?配列?配列はどこですか? 'SegueVar'インスタンス変数に付加されている値に依存する' SecondViewController'のコードですか? –

+0

ところで、 'SegueVar'のようなインスタンス変数の名前は、小文字で始まる必要があります。 –

答えて

0

ビューは、2番目のビューに変更する理由は、私は(それゆえ、私はあなたがストーリーボードにセグエトリガーを設定すると仮定)が表示されません。

ストーリーボードからsegueトリガーを削除し、代わりにperformSegue(withIdentifier:, sender:)を手動で呼び出すことができます。

また、あなたのセグエが正しい識別子(あなたは属性インスペクタからテキストボックスに入力した後エンターキーを押していない場合、時には識別子が設定されていない)を持っている

  • ていることを確認してください。
  • あなたの閉鎖があれば、let nextVC: SecondViewController = ...前にブレークポイントを設定することによって(prepare(forSegue:, sender:)で実行されている。
  • 両方識別子(ストーリーボードで、コードでは)正確同じである。識別子は大文字sentitiveある。

閉鎖が実行されていない場合、問題がおそらくsegue.identifierが正しく設定されていない可能性があります。

+0

お返事ありがとうございます。 if-closureが実行されます。唯一の問題は、閉鎖が実行された後にvar uebergabeが変更されたことです。 SegueVarは、私がSecondviewcontrollerでその値を使用しているため、uebergabeの値を取る必要があります。 –

関連する問題