Справка по кнопкам панели поиска - PullRequest
0 голосов
/ 31 марта 2011

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

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 Ответ

1 голос
/ 31 марта 2011

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

...