我想实现高级搜索功能,以便在搜索栏中输入特定文本时,应根据搜索过滤UITableview中的内容列表,然后突出显示搜索文本? 请给我一些想法?
答案 0 :(得分:13)
使用NSAttributedString ...查找绘制NSAttribute String的UIControllers,因为UILabel,UITextView不支持NSAttributedString ...
在此处获取控制器:https://github.com/AliSoftware/Ali-Cocoa-Classes/tree/master/OHAttributedLabel
PS:如果您计划分发仅支持iOS6的应用程序,因为UILabel现在支持NSAttributedString,您应该直接使用UILabel而不是OHAttributedLabel,因为它现在已经被操作系统本机支持。
答案 1 :(得分:0)
我自己没有尝试过类似的东西,但我的方法如下:
在textField:shouldChangeCharactersInRange:replacementString:
对象中实施方法UITextFieldDelegate
。对于从textField输入或删除的每个字符,都会调用此方法。
在上面的委托方法中,根据TextField中的当前文本内容,执行搜索并返回结果列表(数组)。
获取数组并为每个结果构造一个自定义UITableViewCell。此单元格应该有一个UIWebView,其文本是搜索结果的摘录。
要突出显示,您需要在要在WebView中呈现的文本中执行搜索替换以查找搜索字符串,例如foo,并将其替换为<b>foo</b>
或您可能希望应用的任何其他HTML格式。您可以使用标准的NSString API
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement
进行查找替换。
希望这有帮助。