1

ユーザーインターフェイスに検索バーを追加しました。検索バーはすでに設定されており、機能しますが、UITableViewでコンテンツを検索する方法がわかりません。検索バーに入力した文字で始まらない項目を削除することはできますか?

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar {
if (searchBar.text.length < 1) {
    return;
}
else {
    // Do search stuff here



}}

このコードは機能し、else関数が呼び出されます。しかし、私はそれを行う方法がわかりません。そのためだけにまったく新しいアレイを作成したくはありません。

4

1 に答える 1

3

私はあなたをもっと良くします。この例では、ユーザーの入力に応じて検索します。データが非常に大きい場合は、- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar当初の計画どおりに実装することをお勧めします。残念ながら、2番目の配列が必要ですが、テーブルでその周りをコーディングするのは簡単です。

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
    if(searchText.length == 0)
    {
        isFiltered = FALSE;
    }
    else
    {

        isFiltered = true;
        if (filteredTableData == nil)
            filteredTableData = [[NSMutableArray alloc] init];
        else 
            [filteredTableData removeAllObjects];

        for (NSString* string in self.masterSiteList)
        {
            NSRange nameRange = [string rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
            if(nameRange.location != NSNotFound)
            {
                [filteredTableData addObject:string];
            }
        }
    }
    [self.tableView reloadData];
}

次に、変数がYESに設定されている場合に、デリゲートメソッドを更新してfilteredTableData、通常の配列ではなく配列のデータを表示します。isFiltered

于 2012-07-02T23:13:06.057 に答える