目前我填充我的tableviewcells与多个阵列的代表名称,ID等SearchDisplayController搜索多个阵列
我的问题涉及的内容,当我开始使用搜索显示控制器。我有一个包含名称列表,ID列表,条形码列表和别名列表的数组。当用户键入搜索栏时,我需要能够搜索所有4个数组。当它发现在1个阵列它具有配对的结果与3个其他阵列的结果..
例
- 名称(苹果,胡萝卜,香蕉,狗)
- 别名(红,橙,黄色,棕色)
- 条形码(1,2,10,20)
- ID(30,40,50,60)
因此,如果用户键入 “一个” 我应该填充表查看 苹果,胡萝卜,香蕉和相关的别名,条码,身份证。
如果用户输入2我只能得到 胡萝卜和狗。
如果用户输入0,我会得到所有这些项目。
任何想法如何做到这一点?
更新: 这就是我做到的。
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
BOOL shouldReturn = FALSE;
[searchResults removeAllObjects];
for (int i = 0; i < [itemIDRows count]; i++) {
BOOL foundResult = FALSE;
if ([[itemIDRows objectAtIndex:i] rangeOfString:searchString].location != NSNotFound) {
foundResult = TRUE;
}
if ([[nameRows objectAtIndex:i] rangeOfString:searchString].location != NSNotFound) {
foundResult = TRUE;
}
if ([[barcodeRows objectAtIndex:i] rangeOfString:searchString].location != NSNotFound) {
foundResult = TRUE;
}
if ([[aliasRows objectAtIndex:i] rangeOfString:searchString].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];
shouldReturn = YES;
}
}
return shouldReturn;
}
然后当我填充的tableview我做这样的事
if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]) {
[cell setCellContentsName:[NSString stringWithFormat:@"%@", [nameRows objectAtIndex:[[searchResults objectAtIndex:indexPath.row] integerValue]]];
} else {
[cell setCellContentsName:[NSString stringWithFormat:@"%@", [nameRows objectAtIndex:indexPath.row]];
}
然而,当我键入类似9999它带来了情况,其中只有1个9是在ID或条形码。任何想法如何解决这个问题?
UPDATE2: 通过让列表总是刷新来解决问题,而不是仅在找到结果时重新加载数据。现在,它完美的作品:d