初めまして、Swift初心者です。
LINEとは似て非なる次世代チャットアプリを作っています。
行き詰まってしまいましたので、助けてくださいませ・・・
このままでは世の中を変えられません・・・
【やりたいこと】
友達とのトーク画面の上部のナビゲーションバーのタイトルに、友達の名前を表示させたいです。
そのために、1つ目のview controller(ContactsVC:友達一覧)からtable view内の友達の名前を取得して、
2つ目のview controller(ChatVC:トーク画面)にStringの値を渡したいのですが、うまくできません。。。
【エラー箇所】
エラー無くビルド・実行はできますが、途中でシミュレーターが止まってしまい、
以下コードの 「let chatVC = segue.destination as! ChatVC」のところで、
「Thread 1: signal SIGABRT」 とのエラーメッセージが出てきます。
mainstoryboard上で、ContactsVCとChatVCの間にNavigation Controllerを挟んでしまっているため、
ContactsVCの次のdestinationがChatVCになっていないということでしょうか?
もしその場合、navigation controllerを消すしか方法はないのでしょうか。
コードはこのサイトを参考にしました。
http://begigrammer.hatenablog.com/entry/2016/12/25/000334
お手数ですが、アドバイスを頂けますと非常に非常に幸いです。
よろしくお願いいたします。
Swift
1 2//1つ目のContactsVC内 3 4var result: String = "" 5 6 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){ 7 let user = self.contacts[indexPath.row] 8 result = user.name! 9 performSegue(withIdentifier: CHAT_SEGUE, sender: nil) 10 } 11 12 override func prepare (for segue: UIStoryboardSegue,sender: Any?){ 13 if segue.identifier == CHAT_SEGUE { 14 print(result) //tableviewで選択した友達の名前がちゃんと出力されます。 15 let chatVC = segue.destination as! ChatVC //ビルドは成功しますが、ここで「Thread 1: signal SIGABRT」 のエラーメッセージが出ます。 16 chatVC.received = result 17 } 18 19 20//2つ目のChatVC内 (友達とのトーク画面) 21 22 23var received: String? 24@IBOutlet weak var nav: UINavigationItem! 25 26override func viewDidLoad() { 27 self.nav.title = received 28} 29
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/04 14:11 編集
2018/03/04 14:19