【teratail】画面遷移するボタンをタップ時にThread 1: signal SIGABRT

 

質問

teratail.com

 

実現したいこと

ボタンをタップした時、Aの画面からBの画面()へ、Aの画面からCの画面へ、遷移できるようにしたい。

Segue.identifierは、

A->B:WIN

A->C:LOSE

 

困っていること

ボタンをタップしたら遷移するはずなのに、Thread 1: signal SIGABRTエラーが出る

 

解決方法

Prepareメソッド内で生成したはずのA->Bインスタンスが、実はA->Cインスタンスだった。

 

つまり、if segue.identifier == "WIN"と記述され、本来なら

 

let vc = segue.destination as! Bの画面

 

のはずが、

let vc = segue.destination as! Cの画面

 

となっていた。

 

なので、もしBの画面に遷移するなら、as!の後をBの画面にする。

 

もしCの画面に遷移するなら、if segue.identifier == "LOSE"と記述する。