我的UISearchDisplayController
出现问题,搜索无法正常运行。
这是我的代码:
- (void)filterContentForSearchText:(NSString*)searchText
scope:(NSString*)scope
{
[self.searchResults removeAllObjects];
for (int i = 0; i < [temp_category count]; i++) {
BOOL foundResult = FALSE;
if ([[temp_category objectAtIndex:i] rangeOfString:searchText].location != NSNotFound) {
foundResult = TRUE;
}
if ([[price_producttitle objectAtIndex:i] rangeOfString:searchText].location != NSNotFound) {
foundResult = TRUE;
}
if ([[price_type objectAtIndex:i] rangeOfString:searchText].location != NSNotFound) {
foundResult = TRUE;
}
if ([[price_description objectAtIndex:i] rangeOfString:searchText].location != NSNotFound) {
foundResult = TRUE;
}
if (foundResult) {
NSNumber *result = [NSNumber numberWithInt:i];
if ([self searchResults] == nil) {
NSMutableArray *array = [[NSMutableArray alloc] init];
[self setSearchResults:array];
[array release];
}
[searchResults addObject:result];
}
}
NSLog (@"array = %i", [searchResults count]);
NSLog(@"%@",searchResults);
}
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar
selectedScopeButtonIndex]]];
return YES;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchScope:(NSInteger)searchOption
{
[self filterContentForSearchText:[self.searchDisplayController.searchBar text]
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:searchOption]];
return YES;
}
但我仍然感到困惑,因为当我用第一个字母开始搜索时,它会给出正确的点击。但是当我输入第二个字母时,它只显示一个结果(据我所知,从我的数据样本中还有更多)。我做错了什么。我认为它与用户输入文本有关,但我很困惑我应该使用哪种方法。
我现在的代码是以下组合: this教程和 this那么问题。
有人能给我一个好方向的暗示吗?显示结果很好,只有这方面困扰我。我认为它与触发方法和[self.searchResults removeAllObjects];
有关。
答案 0 :(得分:1)
我想添加我的代码,但问题是我仍然使用上面的代码,但我手动实现UISearchBar(我在教程中的其他地方找到)而不是使用SearchDisplayController。使用SearchDisplayController时,导航栏也出现了问题,这让我有足够的理由自己实现它,而不是使用SearchDisplayController。它为您提供更多自由。
起初它似乎很多工作,所以我选择使用SearchDisplayController,但我真的建议任何需要修改的人,或者谁想要更多自由,请使用UISearchBar和UITableView手动执行:)