0

テーブル ビューがあり、このように項目を追加しています。

 NSDictionary *memberInfo = [self.currentChannel infoForMemberWithID:memberID];

    memberinfo=memberInfo;

  cell.textLabel.text = [NSString stringWithFormat:@"%@",[memberinfo objectForKey:@"name"]];
  cell.detailTextLabel.text = [NSString stringWithFormat:@"%@",[memberinfo objectForKey:@"status"]];


    cell.textLabel.backgroundColor = [UIColor clearColor];
    cell.detailTextLabel.backgroundColor = [UIColor clearColor];  

  return cell;

「そしてそれは正常に機能していました。今、それに検索バーを追加したいと思います。一致した文字列に従ってテーブルビューをロードする必要があります。しかし、私はこのようにテーブルビューをロードしています。配列を検索する方法を知っています。使用して

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText.i want to load the table view according to the match of the searchstring ,Can anybody know this?
4

2 に答える 2

0

検索の実装には、元のリストとフィルタリングされたリストの 2 つのリストが必要です。通常、フィルタリングされたリストを使用してテーブルを埋めます。

あなたの場合、辞書を元のリストとして持つことができます。フィルタリングされたリストの場合NSArray、要件に応じて値またはキーを指定できます。

検索機能で配列リストをフィルタリングし、テーブルをリロードします。cellForRow配列キーからオブジェクトを取得するか、配列値からキーを取得します-後でそのキーのオブジェクトを取得します。

于 2012-10-16T11:06:22.677 に答える
0

SearchBar デリゲート内で NSPredicate を使用して、メイン配列 (メンバーまたは名前を付けたもの) をフィルター処理し、別のグローバルに宣言された配列で結果をキャッチできます。このフィルタリングされた配列を使用してテーブルをリロードします。

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
    [_mArrFilteredList removeAllObjects]; //global array which will contain filtered results
    NSString* searchStr = [NSString stringWithFormat:@"*%@*",_srbActivity.text];

    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"%K == %@",@"name", searchStr];  //will filter according to "name" key in your dictionary.
    [_mArrFilteredList addObjectsFromArray:[_mArrList filteredArrayUsingPredicate:predicate]]; //_mArrList is your main array which has all the dictionaries.
    [yourTableView reloadData];
}

テーブルビュー データソース メソッドで、フィルター処理された配列 (_mArrFilteredList) を使用してテーブルにデータを入力します。

于 2012-10-16T10:33:48.037 に答える