MILLEN BOX 2

個人iOSアプリ開発者hollymotoによる勉強の記録。時々雑記。

XIBカスタムセルを利用したTableViewで画面遷移が出来なくなった理由と解決方法

こんにちは。hollymoto@anthrgrnwrld です。
前回投稿しましたXIBでUITableViewCellをカスタムして利用する方法どうでしたか?
実はこの記事で実装した方法のままだと、ある部分がおかしいことになってしまいます。 それは...

  • TableViewCellをタップした時に次の画面に遷移していたはずなのに遷移しなくなった!!!!

コレです。UITableViewCellから遷移先のViewControllerにSegueを紐付けていた場合です。筆者も前回の記事を投稿してから気付きました(すいません。。。)
今回はこの問題の解決をしていこうと思います。

1. XIBカスタムセルを利用したTableViewで画面遷移が出来なくなった理由

XIBカスタムセルを利用したTableViewで画面遷移が出来なくなった理由ですが、それはTableView内のUITableViewCellタップで紐付けられていたSegueが実行されなくなった為です。

f:id:anthrgrnwrld:20200604122947p:plain:w500

2. XIBカスタムセルを利用したTableViewで画面遷移をする方法

解決方法は色々あるかと思いますが、その中で一番簡単でパッとわかる方法を私は取りました。

  1. tableView(_:didSelectRowAt:)でセルのタップを引っ掛ける
  2. 上記メソッド内でperformSegue(withIdentifier:sender:)を実行しSegueを実行させる

勿論、UITableViewDelegateをoverride出来るUIViewController内で!
コードは以下です。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    performSegue(withIdentifier: "showDetail", sender: nil)    //showDetailは適したIdentifierに適宜置き換えて下さい
}

上記コードで問題は解決できるはずです。

3. まとめ

出来たーっと思ったらそれに伴う別問題が発生するという「あるある」になってしまいました。ご参考下さい。
また、もっとかっこいい方法あるぜーという方、ご連絡頂けますと幸甚でございます。