Продвинутая поисковая реализация в iphone? - PullRequest
9 голосов
/ 17 ноября 2010

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

Ответы [ 2 ]

13 голосов
/ 17 ноября 2010

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

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

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

0 голосов
/ 26 ноября 2010

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

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

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

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

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

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

...