2017-10-31 13 views
0

私はXcodeを使ってプロジェクトを行っています。 4つのボタンがあり、そのうち2つはビュー間でデータを渡し、他の2つはデータを渡さずに別のビューにジャンプするだけです。最初の2つはうまく機能し、別のビューにデータを渡します。しかし、私は言って残りの2、アプリのクラッシュをクリックしたとき:指定されたボタンでのみsegueが動作する方法

「2017年10月30日23:08:11.970500から0400 XXX [2557:65602]にキャストできませんでした値タイプの 「xxx.goalInfoViewController '(0x107f01580)〜 ' xxx.IOViewController '(0x107f019a0)。 "ここで

コードです:

@IBAction func monthlyIncomeAction(_ sender: Any) { 
    numberForSegue = 1 
    performSegue(withIdentifier: "outcomeSegue", sender: self) 
} 
@IBAction func MonthlyOutcomeAction(_ sender: Any) { 
    numberForSegue = 2 
    performSegue(withIdentifier: "incomeSegue", sender: self) 
} 
override func prepare(for segue: UIStoryboardSegue, sender: (Any)?) { 
    let ioController = segue.destination as! IOViewController 
    ioController.segueIndex = numberForSegue 
} 
+0

あなたは、現在のコントローラのクラスであるものを私に伝え、2つの地コントローラのクラスは何ができますか? – trungduc

+0

@trungducあなたはクラスの名前を意味しましたか? –

+0

はい)。 UIViewControllerクラスの名前 – trungduc

答えて

0

あなたはビュー間でデータを渡すためにある2つだけセグエがprepareメソッド内のコードを実行できることを確認しなければなりません。 prepareメソッドの下のコードを試してみましょう。

override func prepare(for segue: UIStoryboardSegue, sender: (Any)?) { 
    if segue.identifier == "outcomeSegue" || segue.identifier == "incomeSegue" { 
     return; 
    } 

    let ioController = segue.destination as! IOViewController 
    ioController.segueIndex = numberForSegue 
} 

それとも

override func prepare(for segue: UIStoryboardSegue, sender: (Any)?) { 
    if segue.destination is IOViewController { 
     let ioController = segue.destination as! IOViewController 
     ioController.segueIndex = numberForSegue 
    } 
} 
+0

ありがとうございました!私は期待したように働いて、2番目を試しました;) –

+0

ようこそ@DifengChen;) – trungduc

関連する問題