Question

I want to implement advance search functionality so that if a particular text is typed in search bar, the list of contents in UITableview should be filtered based on the search and then the search text occurances should be highlighted? Please give me some ideas?

Was it helpful?

Solution

Use NSAttributedString... Find UIControllers that draw NSAttribute String because UILabel,UITextView doesnot support NSAttributedString...

Get the controller here: https://github.com/AliSoftware/Ali-Cocoa-Classes/tree/master/OHAttributedLabel

PS: if you plan to distribute an iOS6-only application, as UILabel now support NSAttributedString, you should use UILabel directly instead of OHAttributedLabel as it is now natively supported by the OS.

OTHER TIPS

I haven't tried something like this myself but my approach would be as follows:

  1. Implement the method textField:shouldChangeCharactersInRange:replacementString: in your UITextFieldDelegate object. This method will get called for every character that is entered or deleted from your textField.

  2. In the above delegate method, based on the current text content in the TextField, perform your search and return a list(array) of results.

  3. Take the array and for each result construct a custom UITableViewCell. This cell should have a UIWebView whose text is an excerpt of your search result.

  4. For the highlighting, you need to perform a search-replace in the text you are about to render in the WebView to find the search string, say foo for example, and replace it with <b>foo</b> or any other HTML formatting you may wish to apply. You can use the standard NSString API - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement to do the find-replace.

Hope this helps.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top