0
我正在使用以下代碼使用uisearchbar,tableview和JSON Web服務進行搜索。目前的問題是,儘管應用程序正在搜索並在tableview中顯示數據,但是在搜索欄中每個文本都發生了變化之後,它正在搜索。我希望它只在用戶觸摸搜索按鈕後才能搜索。當它在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
添加到這個方法
感謝您的幫助
謝謝!那工作。我把NSString * searchQuery;在.h,然後保持searchQuery = [NSString stringWithFormat:@「http://api.****/%@」,searchText];在textDidChange方法和searchBarSearchButtonClicked中的其他所有內容 – hanumanDev 2013-02-21 12:02:27
Plz chk我的更新答案,我追加搜索欄文本到searchQuery字符串。所以不需要在.h文件中聲明searchQuery字符串。如果你在.h文件中聲明它不會產生問題,但是如果你在本地需要它,那麼不需要這樣做。 – Girish 2013-02-21 12:07:13