是否可以在 UITableview 中搜索静态单元格?
Posted
技术标签:
【中文标题】是否可以在 UITableview 中搜索静态单元格?【英文标题】:Is it possible to search static cells in UITableview? 【发布时间】:2012-06-20 12:03:40 【问题描述】:我有一个UITableView
,其中包含通过 Interface Builder 制作的静态单元格。
是否可以使用搜索栏搜索这些单元格?我一直在尝试实现它,但似乎无处可去。对于搜索栏,tableview 是否必须使用动态单元格,或者可以使用静态单元格进行搜索,还是可以通过单元格的标签进行搜索?
【问题讨论】:
【参考方案1】:可以在表格中实现静态单元格的搜索。但是,由于表格后面的数据源隐藏在UITableViewContoller
中,因此您需要将搜索的“线索”放入单元格本身。
我强烈警告不要使用标准单元格类,因为除了一两个标签之外,它们没有提供存储您搜索的数据的地方。然而,使用标签并不是一个好的选择,因为它可能会妨碍您的本地化工作。
更好的方法是为您的UITableViewCell
定义一个自定义类,引入要搜索的其他属性,通过 Identity Inspector 的用户定义的运行时属性部分在 Interface Builder 中设置这些属性,然后使用这些属性在UISearchBar
发起的搜索期间。
这是一个示例:为您的自定义单元定义一个类
@interface SearchableTableViewCell : UITableViewCell
@property (readwrite, nonatomic) NSString *searchString;
@end
在每个静态单元格的 Identity Inspector 中,选择 SearchableTableViewCell
作为类型。在 User Defined Runtime Attributes 面板中,点击 [+],类型选择“string”,名称输入searchString
,并将可搜索内容设置为值。
现在您的UISearchBarDelegate
可以从UITableView
的dataSource
中提取单元格,将它们转换为SearchableTableViewCell
,并检查它们的searchString
属性以确定该单元格是否应包含在搜索结果中。
搜索结束后,您可能需要突出显示已找到的单元格,或隐藏不符合搜索条件的单元格。虽然可以在不更改数据源的情况下进行突出显示,但隐藏需要更重要的覆盖。 Here is a question discussing approaches to hiding static cells in a UITableView
.
【讨论】:
以上是关于是否可以在 UITableview 中搜索静态单元格?的主要内容,如果未能解决你的问题,请参考以下文章