検索機能を実装する際に、UISearchControllerをviewWillAppearで呼んだら、ダメな感じになった
環境
何が起きたか
検索バーのレイアウトが崩れる
検索画面
検索バーにテキスト入力
検索結果
検索対象のデータが幾つかの階層に分けられるので、sectionで分けたり、サイドにsectionに応じたindexを表示させたりしています。
検索結果セルをタップして詳細画面にいって、NavigationBarのBackButtonで戻ると
サイドのindexの部分だけ検索バーが表示されなくなりました。
そのままサイド検索しようとすると
状況は変わりません。
どうしたら改善できたか
問題点
- UISearchControllerの呼び出しや設定をviewWillAppearでやっていた
- なので検索後の詳細ページから戻ったタイミングでtableViewからデータを削除したりさせていないので、UISearchControllerだけ再度設定されると、サイドのindexの部分だけ幅を取られてしまった
改善点
- 検索結果や検索ワードは意図的に消さない限り保持していきたいので、UISearchControllerをviewDidLoadで先に呼んで設定しておく
結果
ある程度いい感じになりました