0

次のコードを使用して、uisearchbar、tableview、および JSON Web サービスを使用して検索しています。現在の問題は、アプリがテーブルビューでデータを検索して表示しているにもかかわらず、検索バーでテキストが変更されるたびに検索していることです。ユーザーが検索ボタンをタッチした後にのみ検索したいと思います。uisearch テキスト フィールドが変更されるたびに Web にクエリを実行している間、現時点ではスタックしているようです。

ここに私が探している方法があります:

-(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{

    NSString *searchQuery = [NSString stringWithFormat:@"http://api.****/%@",searchText];

    NSString *jsonString = [NSString
                            stringWithContentsOfURL:[NSURL URLWithString:searchQuery]
                            encoding:NSStringEncodingConversionAllowLossy|NSUTF8StringEncoding
                            error:nil];

    NSMutableArray *itemsTMP = [[NSMutableArray alloc] init];

    SBJSON *parser = [[SBJSON alloc] init];
    NSDictionary *results = [parser objectWithString:jsonString error:nil];

    itemsTMP = [results objectForKey:@"results"];

    //   [self setDisplayItems:[results objectForKey:@"results"]];

    [self setAllItems:[itemsTMP copy]];
    self.displayItems = [itemsTMP copy];

    int a =   [displayItems count];
    NSString *countString = [NSString stringWithFormat:@"results %d",a];
    countLabel.text = countString;

    [self.tableView reloadData];


}

おそらくコードをに移動する必要があると考えていました

-(void) searchBarSearchButtonClicked:(UISearchBar *)aSearchBar {

    [self.searchBar resignFirstResponder];

    return;
    // searchBar resigns after search clicked

}

:(NSString *)searchTextしかし、このメソッドに を追加する方法がわかりませんでした

助けてくれてありがとう

4

1 に答える 1

1

問題を解決するメソッドにtextDidChangeコードを変換するだけです。searchBarSearchButtonClicked

-(void) searchBarSearchButtonClicked:(UISearchBar *)aSearchBar {

    [self.searchBar resignFirstResponder];

    NSString *searchQuery = [NSString stringWithFormat:@"http://api.****/%@",aSearchBar.text];

    NSString *jsonString = [NSString
                            stringWithContentsOfURL:[NSURL URLWithString:searchQuery]
                            encoding:NSStringEncodingConversionAllowLossy|NSUTF8StringEncoding
                            error:nil];

    NSMutableArray *itemsTMP = [[NSMutableArray alloc] init];

    SBJSON *parser = [[SBJSON alloc] init];
    NSDictionary *results = [parser objectWithString:jsonString error:nil];

    itemsTMP = [results objectForKey:@"results"];

    //   [self setDisplayItems:[results objectForKey:@"results"]];

    [self setAllItems:[itemsTMP copy]];
    self.displayItems = [itemsTMP copy];

    int a =   [displayItems count];
    NSString *countString = [NSString stringWithFormat:@"results %d",a];
    countLabel.text = countString;

    [self.tableView reloadData];

    return;
    // searchBar resigns after search clicked

}
于 2013-02-21T11:59:28.393 に答える