2016-05-29 5 views
0

私は4つの異なるフォームを持つアプリケーションを持っています。これらのフォームは、さまざまな質問をクリックしてオプションを保持するViewControllerにつなげることで完了できます。これをOptionViewControllerと呼ぶことができます。今私は異なるオプションを持つ4つの異なる形式がありますが、すべてOptionViewControllerを使用してデータベースからデータをプルすると、セグを巻き戻してデータを渡す必要があります。unwind segue異なるビューコントローラーにデータを渡す

4つの異なるビューコントローラが存在する可能性があるので、情報が正しく渡されることを確認する必要があります。つまり、destinationviewcontrollerがunwindsegueが第1、第2、

は、私はこの

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 

    if segue.identifier == "optionSelected" { 

     if segue.destinationViewController == FirstViewController { 

      //pass data 

     } else if segue.destinationViewController == SecondViewController { 
      //pass data 
     } 

    } 
} 

ような何かを行う可能性があります。しかし、明らかに、私は私が実際に何をやるべきsegue.destinationViewController == FirstViewController

実行することはできませんと思いましたか?それとも私はちょうど私の問題を解決するすべてのフォーム、のために1 OptionViewControllerを作成するが、私は、全体的なアプリケーションのパフォーマンスは、事前に任意の助けのために起因するビューコントローラの増加に

感謝をドロップするかどうかを確認していないはずです

+0

segue.destinationViewControllerがFirstViewControllerの場合は{{}を試してください。あるいは、 'もしdvc = segue.destinationViewControllerを' let? FirstViewController {'。 – vacawama

+0

あなたのクイック提案に感謝します。それは私の解き放たれたsegueメソッドが私のviewcontrollerを終了するためにCtrlキーを押しているためです。ので、unwindは 'optionviewController'を直前のviewcontrollerから終了します。これは4のいずれかである可能性があります。 – Chris

+0

vacawama'もしsegue.destinationViewControllerがFirstViewControllerなら '{'は私にとって完璧に機能します。 '=='の代わりに 'is'を使っていたはずです。私はそれを感謝の回答としてマークすることができるように答えとして投稿してください! – Chris

答えて

0

もしOPTIと結合任意を使用して変数にのViewControllerを割り当てることができ、あるいは

if segue.destinationViewController is FirstViewController { 

:先のビューコントローラが特定のクラスのものであるかどうかをテストするために、スウィフトキーワードisを使用onalキャスト

if let dvc = segue.destinationViewController as? FirstViewController { 
    // dvc will have type FirstViewController so you can access specific 
    // properties of FirstViewController using dvc 
} 
関連する問題