UITableView
Interface Builder で作成した静的セルを使用しています。
検索バーを使用してこれらのセルを検索することは可能ですか? 私はそれを実装しようとしてきましたが、どこにも行けないようです。検索バーの場合、テーブルビューは動的セルを使用する必要がありますか、それとも静的セルで検索を行うことができますか、それともセルのラベルで検索できますか?
UITableView
Interface Builder で作成した静的セルを使用しています。
検索バーを使用してこれらのセルを検索することは可能ですか? 私はそれを実装しようとしてきましたが、どこにも行けないようです。検索バーの場合、テーブルビューは動的セルを使用する必要がありますか、それとも静的セルで検索を行うことができますか、それともセルのラベルで検索できますか?
テーブル内の静的セルの検索を実装することができます。ただし、テーブルの背後にあるデータ ソースは に隠されているUITableViewContoller
ため、検索の「手がかり」をセル自体に入れる必要があります。
標準のセル クラスは、1 つまたは 2 つのラベルを除いて、検索対象のデータを保存する場所を提供しないため、使用しないように強く注意してください。ただし、ローカリゼーション作業の妨げになる可能性があるため、ラベルの使用は適切な選択ではありません。
より良い方法は、 のカスタム クラスを定義し、UITableViewCell
検索する追加のプロパティを導入し、Identity Inspector の User Defined Runtime Attributes セクションを介して Interface Builder でこれらのプロパティを設定し、これらの属性を によって開始される検索中に使用することです。UISearchBar
.
以下に例を示します。カスタム セルのクラスを定義します。
@interface SearchableTableViewCell : UITableViewCell
@property (readwrite, nonatomic) NSString *searchString;
@end
各静的セルの Identity Inspector でSearchableTableViewCell
、タイプを選択します。User Defined Runtime Attributes パネルで、[+] をクリックし、タイプに「string」を選択searchString
し、名前に入力し、検索可能なコンテンツを値に設定します。
これで、UISearchBarDelegate
からセルを取得して にキャストし、それらのプロパティを調べてUITableView
、セルを検索結果に含めるかどうかを決定できます。dataSource
SearchableTableViewCell
searchString
検索が終了したら、見つかったセルを強調表示したり、検索条件に適合しないセルを非表示にしたりする必要がある場合があります。強調表示はデータ ソースを変更せずに行うことができますが、非表示にするにはより重要なオーバーライドが必要です。で静的セルを非表示にする方法について説明する質問を次に示しUITableView
ます。