Как создать панель поиска, как в приложении погоды? - PullRequest
0 голосов
/ 20 мая 2011

в моем приложении я хочу иметь панель поиска, как в приложении погоды, когда вы добавляете новый город.Я также хочу найти города / места с помощью геокодирования Google и проанализировать результаты, которые я уже знаю, как это сделать, что работает идеально.для этого на самом деле у меня есть два вопроса.

во-первых, как мне создать панель поиска, похожую на панель в приложении погоды или в приложении stokes?Обычная панель поиска не имеет темы, с которой я могу работать.Как они это сделали?

и во-вторых, как я могу стать этим мгновенным / живым поиском?Я имею в виду, что, когда вы начинаете печатать, он начинает искать то, что вы набрали, набирайте буквы для каждой набираемой вами буквы, он выполняет новый поиск и представляет данные через некоторое время, когда вы перестали печатать.Я не могу выполнить запрос для каждой набранной буквы, это вызовет слишком большой трафик и, вероятно, займет слишком много времени.

Ответы [ 2 ]

1 голос
/ 20 мая 2011

Создайте проект на основе окна, отбросьте представление, отбросьте панель UISearchBar, поместите представление поверх панели поиска, сделайте его прямоугольным, и у вас будет панель поиска с темой. Затем вам нужно реализовать протокол UISearchBarDelegate, чтобы при каждом редактировании вы искали названия городов в словаре, который вы предварительно загружали (или непосредственно из Интернета), и выполняли вставку таблицы, если есть совпадения. Вы можете попытаться сопоставить точные имена или использовать расстояние levenshtein .

Возможно, вы хотите получить результаты в реальном времени только после задержки, так что

[NSObject cancelPreviousPerformRequestsWithTarget:self];
[self performSelector:@selector(fillMyTableWithResults) withObject:nil afterDelay:1.0];

в методе textDidChange делегата.

0 голосов
/ 20 мая 2011

Вы смотрели на UISearchDisplayController . Взгляните на этот пример .

EDIT Кэширование предыдущих результатов - это то, что вы можете рассмотреть, но без отправки запроса вы можете получить устаревшие данные. Хотя я на самом деле не пробовал, я думаю, что Three20 фреймворк, так как он построен с идеей сети как источника данных Он также имеет эквивалент TTSearchDisplayController . Вы можете посмотреть, поможет ли это.

...