Внедрение расширенного поиска в iphone?

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


person Community    schedule 17.11.2010    source источник


Ответы (2)


Используйте NSAttributedString ... Найдите UIControllers, которые рисуют строку NSAttribute, потому что UILabel, UITextView не поддерживает NSAttributedString ...

Получите контроллер здесь: https://github.com/AliSoftware/Ali-Cocoa-Classes/tree/master/OHAttributedLabel

PS: если вы планируете распространять приложение только для iOS6, поскольку UILabel теперь поддерживает NSAttributedString, вам следует использовать UILabel напрямую вместо OHAttributedLabel, поскольку теперь он изначально поддерживается ОС.

person KingofBliss    schedule 17.11.2010
comment
Я не могу найти контроллеры для строки NSAttributed - person ; 25.11.2010
comment
Проголосовали за то, что указали нам на большой репозиторий вашего кода вместо прямого ответа. - person David Moles; 04.04.2011

Я сам не пробовал ничего подобного, но мой подход будет следующим:

  1. Реализуйте метод textField:shouldChangeCharactersInRange:replacementString: в своем UITextFieldDelegate объекте. Этот метод будет вызываться для каждого символа, который вводится или удаляется из вашего текстового поля.

  2. В указанном выше методе делегата на основе текущего текстового содержимого в TextField выполните поиск и верните список (массив) результатов.

  3. Возьмите массив и для каждого результата создайте собственный UITableViewCell. В этой ячейке должен быть UIWebView, текст которого представляет собой отрывок из результата поиска.

  4. Для выделения вам необходимо выполнить поиск-замену в тексте, который вы собираетесь отобразить в WebView, чтобы найти строку поиска, например, foo, и заменить ее на <b>foo</b> или любое другое форматирование HTML, которое вы можете применить. Вы можете использовать стандартный NSString API - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement для поиска и замены.

Надеюсь это поможет.

person bhavinb    schedule 26.11.2010
comment
Сначала я также пробовал использовать UIwebView, но загрузка занимает много времени, поэтому я переключился на это. Нет, он намного быстрее и отлично выглядит .. - person KingofBliss; 26.11.2010