Swiftで遊ぼう! on Hatena

あしたさぬきblogでやってた初心者オヤジのiOSプログラミング奮闘記がHatenaに来ました

Swiftで遊ぼう! - 355 - カスタムTableViewでSearch Barを考える

Swiftで遊ぼう!の古い記事-> Life-LOG OtherSide
質問 : Swiftで遊ぼう! - 252 - FaceViewプロジェクト始動 - Swiftで遊ぼう! on Hatena

ここまでのTableViewの機能拡張は、デリゲーションメソッドの実装だけでできたようなものです。

しかし、今日から取り組むSearch Barの実装はもう少し複雑なステップを取ります。

長いリストから探しているデータがあるかどうか、スクロールさせて探すより検索ボックスを使って探す方がユーザーフレンドリーということで、iOSに用意されている標準検索バー(Search Bar)を使用します。

iOS標準のSearch Barは、UISearchControllerを使ってコントールされているので、UIAlertControllerと使い方は似ているような気はします

Search Barにキーをタイプしていくと、テーブルリストの表示が徐々に絞られていきます。

タイプすると、検索範囲(スコープ)を設定するボタンも表示させれます。デモで使用しているテーブルリストはアルファベットの名前なんで、6文字より小さい名前のグループを「Short」、そして6文字以上の名前のグループを「Long」、すべてを「All」に設定します。

iOS8でサーチ機能を実装させるために次の3つのステップを実装していきます。

  1. 検索すべきデータ、この場合「名前」のリストになります。
  2. 検索結果を表示するためのresults view controllerがいります。このview controllerは一時的にデータを表示しているメインコントローラーと入れ替わります。このview controllerは結果をどんな形でも表示することができるですが、普通は、他のTableViewを使って結果を似たように表示させることで、元のテーブルにフィルターがかかったような印象を与えます。
  3. UISearchControllerがサーチバーの表示とresults view controllerに検索結果の表示をさせます。

まず検索すべきデータは、View Controllerの中にあります。名前のデーターを保持した辞書型のnamesとアレー型のkeysですが、これを結果表示をさせるビューコントローラー、results view controllerに手渡す必要があります。

ということでresults view controllerを用意します。

ストーリーボードから作らないで、コードで実装していくやり方なので、プロジェクトナビゲータのSectionsのフォルダーで右クリックして「New File...」を選びます。

いつもの手順でiOS SourceからCocoa Touch Classを選んで、suclassをUITableViewControllerにして名前を「SearchResultsController」にします。

このビューコントローラーに検索の結果を表示させる機能を実装していくのですが、いくつか新しいクラスやプロトコールが出てきます。その関係を理解する必要があるので明日から取り組みます。