是否可以在 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 可以从UITableViewdataSource 中提取单元格,将它们转换为SearchableTableViewCell,并检查它们的searchString 属性以确定该单元格是否应包含在搜索结果中。

搜索结束后,您可能需要突出显示已找到的单元格,或隐藏不符合搜索条件的单元格。虽然可以在不更改数据源的情况下进行突出显示,但隐藏需要更重要的覆盖。 Here is a question discussing approaches to hiding static cells in a UITableView.

【讨论】:

以上是关于是否可以在 UITableview 中搜索静态单元格?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 Swift 在 iOS 7 中更改静态单元格高度?

UITableView 在动态环境中创建静态单元格

UITableView 静态单元格作为子视图?

UITableView中的自定义单元类与静态单元格

静态部分/单元格的 UITableView 背景图像

具有多个部分的静态分组 UITableView 的默认外观