Как реализовать поиск в UIPicker? - PullRequest
0 голосов
/ 03 февраля 2010

У меня есть UIPicker, для которого мне нужно написать механизм поиска.Данные, которые подают этот сборщик, представляют собой массив строк.Когда пользователь вводит строку поиска (у меня есть UISearchBar, который обрабатывает это.) Я хотел бы найти все строки, содержащие поисковый термин.Из приведенного ниже примера кажется, что мне нужно написать предикат, а затем отфильтровать массив.Проблема, с которой я столкнулся сейчас, заключается в том, что я не знаю, как отобразить результаты поиска для пользователя.Я попытался присвоить набор результатов обратно исходному массиву, но это не правильно.Может ли кто-нибудь предложить метод реализации поиска UIPicker с примером кода?

NSMutableArray* names = [NSMutableArray arrayWithObjects:@"Andy", @"Bart", @"Bob", nil]; 
NSPredicate* predicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] 'b'"];
NSArray* namesStartingWithB = [names filteredArrayUsingPredicate: predicate];

Ответы [ 2 ]

0 голосов
/ 03 февраля 2010

Вот рабочий проект

Помните, что ваш предикат чувствителен к регистру. Вы использовали строчную букву b, чтобы она не возвращала никаких результатов. Мое решение в основном то же самое, что предложил Джо. Я использую два массива. Один массив для полного набора данных, а затем другой массив для результата поиска. Источником данных для средства выбора является частичный массив, тогда я просто перезагружаю средство выбора при выполнении поиска.

0 голосов
/ 03 февраля 2010

Это ни в коем случае не супер изобретательское решение, но как насчет простого сохранения результатов в виде отдельного массива (то есть searchResultsArr) и изменения источника данных на это? В коде просто используйте searchResultsArr, если это не ноль. Если это ноль, используйте полный массив.

обязательно позвоните

[picker reloadAllComponents];

при выключении

...