うちのいぬ Tech Blog

Tech Blog of Uchinoinu/My dog

検索機能を実装する際に、UISearchControllerをviewWillAppearで呼んだら、ダメな感じになった

環境

何が起きたか

f:id:susanne:20160907120904g:plain

検索バーのレイアウトが崩れる

検索画面

f:id:susanne:20160907105110p:plain

検索バーにテキスト入力

f:id:susanne:20160907105117p:plain

検索結果

f:id:susanne:20160907105134p:plain

検索対象のデータが幾つかの階層に分けられるので、sectionで分けたり、サイドにsectionに応じたindexを表示させたりしています。

検索結果セルをタップして詳細画面にいって、NavigationBarのBackButtonで戻ると

f:id:susanne:20160907105138p:plain

サイドのindexの部分だけ検索バーが表示されなくなりました。

そのままサイド検索しようとすると

f:id:susanne:20160907105144p:plain

状況は変わりません。

どうしたら改善できたか

問題点

  • UISearchControllerの呼び出しや設定をviewWillAppearでやっていた
    • なので検索後の詳細ページから戻ったタイミングでtableViewからデータを削除したりさせていないので、UISearchControllerだけ再度設定されると、サイドのindexの部分だけ幅を取られてしまった

改善点

  • 検索結果や検索ワードは意図的に消さない限り保持していきたいので、UISearchControllerをviewDidLoadで先に呼んで設定しておく

結果

f:id:susanne:20160907120918g:plain

ある程度いい感じになりました