我有一个UI,显示来自用户表的数据,如FirstName,LastName,Email等。现在我想创建一个搜索栏以及范围按钮,根据单击的范围按钮过滤数据。我有2个范围按钮,FirstName和LastName。默认情况下,选择FirstName按钮。以下是我将数据添加到mutablearray的方法,
userData = [[NSMutableArray alloc] init];
for (NSDictionary *tmpDic in response) {
[userData addObject: [NSString stringWithFormat: @"%@ %@",
[tmpDic valueForKey: @"FirstName"],[tmpDic valueForKey: @"LastName"]]];
}
我的搜索代码,
- (void) searchTableView {
NSString *searchText = theSearchBar.text;
NSMutableArray *searchArray = [[NSMutableArray alloc] init];
for (NSString *sTemp in userData)
{
NSRange titleResultsRange = [sTemp rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
[copyuserData addObject:sTemp];
}
NSLog(@"Copied data is:%@", copyuserData);
[searchArray release];
searchArray = nil;
}
上面的代码适用于搜索userData数组,但我不知道如何更改代码,以便根据FirstName,LastName范围按钮显示结果。我将如何将按钮连接到搜索栏,以便它只显示结果,具体取决于单击的范围栏按钮。提前谢谢..
答案 0 :(得分:1)
你需要做两件事: 1.查看searchBar.selectedScopeButtonIndex的值 - 这将告诉您是否需要搜索名字或姓氏。 2.根据范围按钮,您要搜索每个数组项的第一部分或第二部分。有很多方法可以做到这一点。可能最简单的方法是保留2个并行数组,firstNames和lastNames,它们来自tmpDic。然后,对于实际搜索,您可以循环遍历firstNames或lastNames,或者执行for(int j = 0; j< [firstNames count]; j ++)并获取[firstNames objectAtIndex:j]并将其与您的临时字符串进行比较。如果任何字符串匹配,请将其添加到结果数组中。