帮助搜索栏范围按钮

时间:2011-03-31 15:16:26

标签: iphone ios4 button scope uisearchbar

我有一个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范围按钮显示结果。我将如何将按钮连接到搜索栏,以便它只显示结果,具体取决于单击的范围栏按钮。提前谢谢..

1 个答案:

答案 0 :(得分:1)

你需要做两件事:  1.查看searchBar.selectedScopeButtonIndex的值 - 这将告诉您是否需要搜索名字或姓氏。  2.根据范围按钮,您要搜索每个数组项的第一部分或第二部分。有很多方法可以做到这一点。可能最简单的方法是保留2个并行数组,firstNames和lastNames,它们来自tmpDic。然后,对于实际搜索,您可以循环遍历firstNames或lastNames,或者执行for(int j = 0; j< [firstNames count]; j ++)并获取[firstNames objectAtIndex:j]并将其与您的临时字符串进行比较。如果任何字符串匹配,请将其添加到结果数组中。