Помощь с кнопками области панели поиска

У меня есть пользовательский интерфейс, который отображает данные из пользовательской таблицы, например FirstName, LastName, Email и т. д. Теперь я хочу создать панель поиска вместе с кнопками области, которая фильтрует данные в зависимости от нажатой кнопки области. У меня есть 2 кнопки области, Имя и Фамилия. По умолчанию выбрана кнопка Имя. Ниже показано, как я добавляю свои данные в изменяемый массив,

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 он отображал результат. как я буду подключать кнопки к панели поиска, чтобы она отображала результат только в зависимости от того, какая кнопка панели области действия нажата. Заранее спасибо..


person developer    schedule 31.03.2011    source источник


Ответы (1)


Вам нужно сделать две вещи: 1. Посмотрите на значение searchBar.selectedScopeButtonIndex — это скажет вам, нужно ли вам искать имена или фамилии. 2. В зависимости от кнопки области поиска вы хотите искать либо в первой части каждого элемента массива, либо во второй части. Есть много способов сделать это. Вероятно, проще всего сохранить 2 параллельных массива, firstNames и lastNames, которые вы заполняете из tmpDic. Затем для фактического поиска вы можете либо пройти через firstNames или lastNames, либо выполнить for(int j=0;j‹[firstNames count]; j++) и получить [firstNames objectAtIndex:j] и сравнить это с вашей временной строкой. Если какая-либо строка совпадает, добавьте ее в массив результатов.

person Rayfleck    schedule 31.03.2011