うちのいぬ Tech Blog

Tech Blog of Uchinoinu/My dog

SearchBarでのインクリメンタルサーチ時にNavigationBarのBack Buttonで戻って再度検索をすると正常に動かない件

環境

状況

  • SearchBarを使ってTableViewControllerで、インクリメンタルサーチを実装
  • 検索ワードを入力
  • xボタンやcancelボタンではなく、戻るボタンで離脱
  • 再度検索をしようとしたら、正常に動かなかった

検索画面の初期状況

f:id:susanne:20160907143444p:plain

検索バーにFirstResponderが移ると

f:id:susanne:20160907143456p:plain

データが空になります

インクリメンタルサーチ

f:id:susanne:20160907143449p:plain

一文字入れる毎に結果が変わっていきます

しかしここで、

xボタンやキャンセルボタンではなく、NavigationItemのBack Buttonで離脱すると、再度検索しようとしたら以下の様になりました。 f:id:susanne:20160907143453p:plain

正常に検索ができず、検索の初期画面から変化しません。 cancelボタンも表示されません。

対応

  • viewWillDisappearにて、UISearchControllerをactive = false にします
    var resultSearchController = UISearchController()

    override func viewWillDisappear(animated: Bool) {
        self.resultSearchController.active = false
    }

これで正常に動くようになりました。